使用'pip |部署Python软件包的任何方法 easyinstall'+'* .pyc only'+'flat名称空间包装'+ virtualenv?

Dra*_*uan 5 python packaging setuptools virtualenv

目标:

  • 利用现代的Python打包工具集将专有程序包部署/安装到某些virtualenv中。
  • 安装的软件包应仅包含已编译的* .pyc(或* .pyo),而不包含源文件。
  • 有几个软件包,并且使用供应商名称(此处为Studio 选择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 . #获取require.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 *?

BOY*_*YPT -1

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

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

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

所以当你导入这个模块时,它就.zip在路径中。您所要做的就是在 中的自定义步骤中setup.py,将 zip 文件复制到正确的位置。