Windows下具有Django的Pyinstaller-“环境只能包含字符串”

时间:2019-01-28 16:57:30

标签: django pyinstaller

我正在编写一个脚本,该脚本是django设置的manage.py runserver实用程序周围的简单gui包装程序。我已经能够在OSX上将整个程序与PyInstaller打包在一起;但是,在Windows上创建相关的可执行文件时,出现以下错误:

TypeError: environment can only contain strings

研究了PyInstaller调用的一些实用程序以解决此错误之后,我发现已将两个环境变量设置为unicode字符串:DJANGO_SETTINGS_MODULEPYTHONPATH环境变量。

我可以可行地修改其中一个PyInstaller脚本,以尝试对这些变量进行重新编码,然后再将它们击中引发错误的基础Popen;但是,这似乎不是很容易移植。

这是任何人之前遇到的问题吗?是否有我应该更改的spec设置或其他类似的东西?

谢谢!

修改

我尝试将任何环境变量编码为“ ascii”,但最终仍将其设置为unicode字符串。示例:

os.environ.setdefault("DJANGO_SETTINGS_MODULE".encode("ascii", "ignore"), "DataSite.settings".encode("ascii", "ignore"))

我想念什么吗?

1 个答案:

答案 0 :(得分:0)

我找到了这个问题的答案;事实证明,我在运行时将unicode字符串传递给各种path变量的PyInstaller方法中,这些unicode字符串最终使井中毒,直到它们被存储为环境变量为止。用str()函数包围它们可以解决该问题。