我使用setuptools来分发我的python包.现在我需要分发额外的数据文件.
从我从setuptools文档中收集到的内容,我需要将我的数据文件放在包目录中.但是,我宁愿将我的数据文件放在根目录的子目录中.
我想避免的:
/ #root
|- src/
| |- mypackage/
| | |- data/
| | | |- resource1
| | | |- [...]
| | |- __init__.py
| | |- [...]
|- setup.py
Run Code Online (Sandbox Code Playgroud)
我想要的是:
/ #root
|- data/
| |- resource1
| |- [...]
|- src/
| |- mypackage/
| | |- __init__.py
| | |- [...]
|- setup.py
Run Code Online (Sandbox Code Playgroud)
如果它不是必需的话,我对拥有这么多子目录感到不舒服.我找不到原因,为什么我/ /将文件放在包目录中.使用如此多的嵌套子目录恕我直言也很麻烦.或者有任何理由可以证明这种限制吗?
我正在尝试使用 构建一个 python 轮setuptools
。该包需要包含两个文件:
mymodule.py
- 与以下目录相同的 python 模块setup.py
myjar.jar
- 存在于我的包目录之外的 java .jar 文件我正在使用 构建我的包python3 setup.py bdist_wheel
。
如果我setup()
这样调用:
setup(
name="mypkg",
py_modules=["mymodule"],
data_files=[('jars', ['../target/scala-2.11/myjar.jar'])]
)
Run Code Online (Sandbox Code Playgroud)
然后myjar.jar
确实成功地包含在 .whl 中(到目前为止还不错),但是当我pip install mypkg
将罐子放在/usr/local/myjar.jar
(这有点解释了原因)时,这根本不是我想要的,我希望它存在于与 相同的位置mymodule.py
,即/usr/local/lib/python3.7/site-packages/
如果我setup.py
改为
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': '../target/scala-2.11/myjar.jar'}
)
Run Code Online (Sandbox Code Playgroud)
或者
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': ['../target/scala-2.11/myjar.jar']}
)
Run Code Online (Sandbox Code Playgroud)
那么myjar.jar
根本不包含在 .whl 中。我尝试复制myjar.jar
到同一目录并更改setup.py
为:
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': 'myjar.jar'} …
Run Code Online (Sandbox Code Playgroud)