6

目标:

  • 利用现代 Python 打包工具集将专有包部署/安装到一些 virtualenv 中。
  • 已安装的软件包应仅包含已编译的 *.pyc(或 *.pyo),不包含源文件。
  • 有几个包,供应商名称(这里我们为我们的工作室选择dgmx)用作包名称。因此,安装的软件包将类似于dgmx/alucarddgmx/bansheedgmx/carmilla,...
  • 已安装软件包的文件层次结构应类似于python setup.py install --single-version-externally-managedpip install。请参阅我为什么无法通过手动 *python setup.py install* 获得 *pip install* 的确切结果?

简而言之:

我喜欢仅通过编译的 *.pyc(或 *.pyo)文件将专有命名空间包部署到 virtualenv 中,其中文件/目录层次结构仅反映命名空间,其中许多ooxx.egg路径污染了sys.path 。

我尝试过的东西:

  1. python setup.py bdist_egg --exclude-source-files然后easy_install ooxx.egg
    • 污染每个命名空间包的“sys.path”。
  2. python setup.py install --single-version-externally-managed.
    • 不只是 *.pyc。
    • “install_requires”被忽略了!
    • 需要手动放置ooxx.egg-info/installed-files.txt以使卸载正常工作。
  3. pip install .在“setup.py”的位置。
    • 不只是 *.pyc。
  4. pysetup install .在“setup.py”的位置。
    • 不只是 *.pyc。

更新

我目前的想法是遵循方法2。

  • python setup.py egg_info --egg-base .# 获取 requires.txt
  • python setup.py install --single-version-externally-managed --record installed-files.txt# 获取安装文件.txt
  • 通过“requires.txt”手动安装其他依赖
  • 通过“installed-files.txt”手动删除已安装的源文件(*.py)
  • 从“installed-files.txt”中删除源文件(*.py)并将其放入已部署的“ooxx.egg-info/installed-files.txt”

参考:

  1. 从 setuptools 迁移到 pip+virtualenv
  2. 使用 setuptools 仅安装 .pyc(python 编译)
  3. 我可以仅将 Python .pyc 文件部署到 Google App Engine 吗?
  4. 为什么我无法通过手动 *python setup.py install* 获得 *pip install* 的确切结果?
4

1 回答 1

-1

一些技巧可能会有所帮助:

将您的源代码编译成.pyc,将它们压缩到一个.zip文件中。

用一个简单的模块编写一个新模块,它所做的只是.zipsys.path.

因此,当您导入此模块时,.zip路径中。您所要做的就是在自定义步骤中setup.py,将 zip 文件复制到适当的位置。

于 2012-04-17T10:17:18.103 回答