Python distutils 为 package_dir 设置相对路径

标签 python distutils

我看过这里:
How can I get my setup.py to use a relative path to my files?
在这里:
python distutils does not include data_files

这里:
Confused about the package_dir and packages settings in setup.py 却找不到爱。

我怀疑 distutils 不支持我正在尝试使用的目录结构,但希望得到确认和/或关于如何改进的建议。

我有以下目录结构:

/src  
├── user 
├── admin  
│   ├── admin.py  
│   ├── LICENSE.txt  
│   ├── MANIFEST  
│   ├── MANIFEST.in  
│   ├── README.txt  
│   └── setup.py  
└── lib  
    ├── __init__.py  
    ├── __init__.pyc  
    ├── rcodes.py  
    ├── rcodes.pyc  
    ├── validation.py  
    └── validation.pyc  

其中 src 中的几个项目依赖于 lib 包。但是,当尝试在/src/admin 中运行 setup.py 时,我无法在最终包中包含 lib 目录(使用 setup.py sdist)。

Setup.py如下: 从 distutils.core 导入设置

setup(
name='admin_server',
version='0.0.0',
author='Instamrkt',
author_email='info@instamrkt.com',
url='http://instamrkt.com',
description='Instamrkt Admin Server',
packages=['lib'],
package_dir = {'lib': '../lib'},
py_modules = [
'admin',
'lib.rcodes',
'lib.validation'
],)

产生:

[foozle@ip-172-31-36-251 admin]$ python setup.py sdist
running sdist
running check
reading manifest template 'MANIFEST.in'
writing manifest file 'MANIFEST'
creating admin_server-0.0.0
making hard links in admin_server-0.0.0...
hard linking README.txt -> admin_server-0.0.0
hard linking admin.py -> admin_server-0.0.0
hard linking setup.py -> admin_server-0.0.0
Creating tar archive
removing 'admin_server-0.0.0' (and everything under it)
[foozle@ip-172-31-36-251 admin]$ tar tzf ./dist/admin_server-0.0.0.tar.gz
admin_server-0.0.0/
admin_server-0.0.0/PKG-INFO
admin_server-0.0.0/admin.py
admin_server-0.0.0/setup.py
admin_server-0.0.0/README.txt

缺少包库。

明确地说,我希望在包中保留相同的目录结构,这样我就可以在多个发行版中为不同的应用程序使用 lib。

谢谢!

最佳答案

当使用 package_dir 选项指向上游目录 ('../lib') 时,您无法创建源代码分发,因为 sdist 将按原样复制整个源代码树,而 '../lib' 在外部结束构建树。

但是您可以创建一个二进制分发版:

python setup.py bdist

或者,如果使用设置工具:

python setup.py bdist_wheel

如果您的模块是纯 Python,则后者的优势在于可以创建与系统无关的发行版。

关于Python distutils 为 package_dir 设置相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25425511/

相关文章:

python - 是否可以通过事务方式改变 GAE 实体?

python - Python 部署的最佳实践——多个版本、标准安装位置、打包工具等

Python Tkinter 单选按钮变量输出

python - setup.py 没有安装数据文件

python - 使用 distutils 的 setup.py 编译 C 共享库,当库依赖于第二个共享库时

python distutils : how to change default compiler flags for one Extension only

python - 让 distutils 在正确的位置查找 numpy 头文件

python - 在 Django View 中保持状态以提高分页性能

python - 在Python中打开标签中的txt文件

python - 使用 Matplotlib 绘制多索引数据框时出现 x 轴标签错误