目标:
- 利用现代 Python 打包工具集将专有包部署/安装到一些 virtualenv 中。
- 已安装的软件包应仅包含已编译的 *.pyc(或 *.pyo),不包含源文件。
- 有几个包,供应商名称(这里我们为我们的工作室选择dgmx)用作包名称。因此,安装的软件包将类似于dgmx/alucard、dgmx/banshee、dgmx/carmilla,...
- 已安装软件包的文件层次结构应类似于
python setup.py install --single-version-externally-managed
或pip install
。请参阅我为什么无法通过手动 *python setup.py install* 获得 *pip install* 的确切结果?
简而言之:
我喜欢仅通过编译的 *.pyc(或 *.pyo)文件将专有命名空间包部署到 virtualenv 中,其中文件/目录层次结构仅反映命名空间,其中许多ooxx.egg路径污染了sys.path 。
我尝试过的东西:
python setup.py bdist_egg --exclude-source-files
然后easy_install ooxx.egg
。- 污染每个命名空间包的“sys.path”。
python setup.py install --single-version-externally-managed
.- 不只是 *.pyc。
- “install_requires”被忽略了!
- 需要手动放置ooxx.egg-info/installed-files.txt以使卸载正常工作。
pip install .
在“setup.py”的位置。- 不只是 *.pyc。
pysetup install .
在“setup.py”的位置。- 不只是 *.pyc。
更新:
我目前的想法是遵循方法2。
python setup.py egg_info --egg-base .
# 获取 requires.txtpython 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”
参考: