【问题标题】:Workaround read-only site-packages for cx_freezecx_freeze 的解决方法只读站点包
【发布时间】: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 documentationPYTHONPATH填充应该相当于使用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.htmlsite.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 好的,现在效果很好!我很乐意接受你写的答案。

标签: python solaris cx-freeze


【解决方案1】:

这对我来说就像一个魅力:

$ python setup.py install --home=$HOME

在cx_freeze的源码目录下运行发现on the Sourceforge download page

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    相关资源
    最近更新 更多