使用'pip |来部署Python包的任何方法easyinstall'+'* .pyc only'+'flat namespace packges'+ virtualenv?

时间:2012-04-17 07:06:03

标签: python virtualenv packaging setuptools

目标:

  • 利用现代Python打包工具集将专有软件包部署/安装到某些virtualenv中。
  • 安装的软件包应包含仅在没有源文件的情况下编译的* .pyc(或* .pyo)。
  • 有几个软件包,供应商名称(这里我们为工作室选择 dgmx )用作软件包名称。因此,安装的软件包将类似于 dgmx / alucard dgmx / banshee dgmx / carmilla ,...
  • 已安装软件包的文件层次结构应与python setup.py install --single-version-externally-managedpip install类似。请参阅How come I can't get the exactly result to *pip install* by manually *python setup.py install*?

简而言之:

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

我尝试过的东西:

  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 以使 uninstall 正常工作。
  3. pip install .位于" setup.py"的位置。
    • 不仅仅是* .pyc。
  4. pysetup install .位于" setup.py"的位置。
    • 不仅仅是* .pyc。
  5. 更新

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

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

    参考文献:

    1. Migrating to pip+virtualenv from setuptools
    2. installing only .pyc (python compiled) with setuptools
    3. Can I deploy Python .pyc files only to Google App Engine?
    4. How come I can't get the exactly result to *pip install* by manually *python setup.py install*?

1 个答案:

答案 0 :(得分:-1)

有些技巧可能有所帮助:

将您的来源编译为.pyc,然后将其压缩到一个.zip文件中。

使用简单模块编写一个新模块,只需将.zip添加到sys.path

因此,当您导入此模块时,.zip位于路径中。您只需在setup.py中进行自定义步骤,将zip文件复制到正确的位置。