【发布时间】:2011-12-11 18:57:16
【问题描述】:
我目前正在尝试让cx_freeze 在我必须使用的 Solaris 工作站上工作,以便从我拥有的 Python 脚本生成可执行文件。问题是,我不是这台机器的管理员,cx_freeze 的安装请求写入站点包,这对我来说是只读的。
所以,很明显,我得到了这个错误:
creating /usr/local/lib/python2.6/site-packages/cx_Freeze
error: could not create '/usr/local/lib/python2.6/site-packages/cx_Freeze': Read-only file system
如果我尝试运行它,它会失败:
bash-3.00$ python /home/xxxx/cx_freeze-4.2.3/cxfreeze --target-dir cx_dist src/p_tool.py
Traceback (most recent call last):
File "/home/xxxx/cx_freeze-4.2.3/cxfreeze", line 5, in <module>
main()
File "/home/xxxx/cx_freeze-4.2.3/cx_Freeze/main.py", line 187, in main
silent = options.silent)
File "/home/xxxx/cx_freeze-4.2.3/cx_Freeze/freezer.py", line 91, in __init__
self._VerifyConfiguration()
File "/home/xxxx/cx_freeze-4.2.3/cx_Freeze/freezer.py", line 371, in _VerifyConfiguration
self._GetInitScriptFileName()
File "/home/xxxx/cx_freeze-4.2.3/cx_Freeze/freezer.py", line 283, in _GetInitScriptFileName
raise ConfigError("no initscript named %s", name)
cx_Freeze.freezer.ConfigError: no initscript named Console
显然,这与安装失败有关。所以,这是我的问题:
如果不安装virtualenv,我可以避免写入site-packages,并让cx_freeze从我的主文件夹执行吗?
EDIT我看了at site.py documentation,PYTHONPATH填充应该相当于使用site-packages。所以我的问题现在更像是:要添加到PYTHONPATH 的路径是什么,以便可以从任何位置执行cx_freeze?
注意事项:
- 我想避免与
virtualenv打交道,因为我已经在努力理解可执行工具... - 我看到了this question,但这仍然需要访问
site-packages文件夹,而且它不是特定于用户的; - 我尝试将以下路径添加到 PYTHONPATH,但这不起作用:
/home/xxxx/cx_freeze-4.2.3/build/lib.solaris-2.10-sun4v-2.6; - 我也在尝试使用
PyInstaller,但存在依赖问题(管理员并没有真正帮助我)。
【问题讨论】:
-
不是 python/virtualenv 专家,但 virtualenv 将是解决方案...
-
嗯,从我在这里读到的内容:docs.python.org/library/site.html 和
site.py代码中,site-packages类似于更新PYTHONPATH:它们都应该导致sys.path被附加指定地点。那么它似乎更多的是一个问题:cx_freeze试图准确找到什么? [问题更新] -
我的共享主机的管理员在我的控制下为 python 包设置了一个备用位置,并向我解释了这个过程,HIH:创建一个目录 /home/xxxxx/data/python,其中包括一个bin 和 lib 文件夹。注意这与 ~/data/python/; 相同。创建一个 .bash_profile,其中包含 PATH 和 PYTHON_PATH 中的新目录;创建一个 .pydistutils.cfg 指定将新的 python 模块安装到新的目录中;下载“setuptools”(goo.gl/ar2Wv)并安装(python setup.py install);使用应用程序时,请确保将 PYTHON_PATH 设置为引用您的新文件夹。
-
很高兴知道,但是现在,我遇到了工作站访问问题...我会尽快尝试。因为我应该是唯一使用这种机制的人,所以这可以工作。
-
@MichaelJW 好的,现在效果很好!我很乐意接受你写的答案。