我正在编写一个脚本,它是围绕我的django设置的manage.py runserver
实用程序的一个简单的gui包装器。我已经能够在OSX上用PyInstaller将整个东西打包在一起了;然而,当在Windows上创建相关的可执行文件时,我会得到以下错误:
TypeError: environment can only contain strings
在深入研究了PyInstaller为解决这个bug而调用的一些实用程序之后,我发现有两个环境变量被设置为unicode字符串:DJANGO_SETTINGS_MODULE
和PYTHONPATH
环境变量。
我可以修改其中一个PyInstaller脚本,尝试在这些变量到达引发错误的底层Popen
之前对其进行重新编码;然而,这似乎并不是很容易移植。
这是以前有人遇到过的问题吗?是否有spec
设置或其他类似的设置需要我更改?
谢谢!
编辑
我曾尝试将任何环境变量编码为"ascii",但它们最终仍被设置为unicode字符串。示例:
os.environ.setdefault("DJANGO_SETTINGS_MODULE".encode("ascii", "ignore"), "DataSite.settings".encode("ascii", "ignore"))
我是不是错过了什么?
我找到了这个问题的答案;事实证明,当我运行它时,我正在将unicode字符串传递到各种path
变量的PyInstaller方法中,而这些unicode字符串最终毒害了它们作为环境变量存储的位置。用str()
函数包围他们解决了这个问题