【发布时间】:2020-08-20 18:08:20
【问题描述】:
我正在尝试使用setuptools 构建一个 python 轮子。该包需要包含两个文件:
-
mymodule.py- 与setup.py在同一目录中的 python 模块 -
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'])]
)
然后myjar.jar 确实成功包含在.whl 中(到目前为止很好)但是当我pip install mypkg 将罐子放在/usr/local/myjar.jar (this 有点解释原因)这不是我想要的全部,我希望它和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'}
)
或
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': ['../target/scala-2.11/myjar.jar']}
)
那么myjar.jar 根本不会包含在.whl 中。我尝试将myjar.jar 复制到同一目录并将setup.py 更改为:
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': 'myjar.jar'}
)
或
setup(
name="mypkg",
py_modules=["mymodule"],
package_data={'jars': ['myjar.jar']}
)
但myjar.jar 仍然没有包含在 .whl 中。
我已经为此烦恼了好几个小时,这就是我在这里的原因。
我已经阅读了无数关于此的 SO 帖子:
- How to include package data with setuptools/distribute?
- MANIFEST.in ignored on "python setup.py install" - no data files installed?
- How do you add additional files to a wheel?
- setuptools: adding additional files outside package
建议data_files、package_data、include_package_data=True 和/或使用Manifest.in 文件的不同组合,但我仍然无法按我的意愿工作,所以我在这里希望有人可以建议我做错了什么。
【问题讨论】:
-
谢谢,帮了大忙。我不得不大量重组我的代码以匹配您文章中的结构,现在它可以工作了。我现在一点一点地拆开它,把它移回我想要的结构,看看它在哪里断裂。一个关键的区别是我的代码只包含一个模块,而不是一个包。让我们看看我能不能让它工作。
-
我明白了。基本上你应该从你展示的最后一个例子(第 5 个)开始。
标签: python setuptools