相关疑难解决方法(0)

setuptools:包数据文件夹位置

我使用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

81
推荐指数
2
解决办法
4万
查看次数

使用 setuptools 在 Python 包中包含额外文件

我正在尝试使用 构建一个 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)

python setuptools

2
推荐指数
1
解决办法
5083
查看次数

标签 统计

python ×2

setuptools ×2