【问题标题】:Including and accessing additional files in python packages在 python 包中包含和访问附加文件
【发布时间】:2016-01-15 17:34:50
【问题描述】:

我知道大致相似的问题have already been asked,但我似乎无法找到解决我的特定问题(或我的错误!)的方法。

我正在为自己构建一个小型 Python 包,因此我可以使用多个函数而无需关心文件夹和路径。对于其中一些功能(例如,用于插值),我需要在安装包时也应复制的其他文件。无论我尝试什么,我都无法让它工作。我也很困惑如何在安装后不明确指定它们的路径来添加这些文件。

这是我的包的结构

my_package
├── setup.py
├── README.rst
├── MANIFEST.in
├── my_package
│   ├── __init__.py
│   └── some_stuff.py
├── tables
│   ├── my_table.txt

my_Table.txt 是我需要安装的附加文件,所以我将 MANIFEST.in 设置为

include README.rst
recursive-include tables *

而我的setup.py 看起来像这样(包括include_package_data=True 语句)

from setuptools import setup

setup(name='my_package',
      version='0.1',
      description='Something',
      url='http://something.com',
      author='me',
      author_email='an_email',
      license='MIT',
      packages=['my_package'],
      include_package_data=True,
      zip_safe=False)

但是,在运行python setup.py install 之后,我在任何地方都找不到my_table.txt。我究竟做错了什么?这些文件在哪里/如何复制?并且安装完包之后,不显式写怎么获取my_table.txt的路径呢?

非常感谢!

【问题讨论】:

标签: python package setuptools


【解决方案1】:

我花时间尝试了您的代码/结构。 事实上,packages=['my_package'], 只安装“my_package”(子文件夹)的内容。

您可以在 setup.py 中使用“find_packages”,我使它适用于您的结构。

from setuptools import setup, find_packages

setup(name='my_package',
  version='0.1',
  description='Something',
  url='http://something.com',
  author='me',
  author_email='an_email',
  license='MIT',
  packages=find_packages(),
  include_package_data=True,
  zip_safe=False)

您可以在此处阅读有关“find_packages”的更多信息: https://pythonhosted.org/setuptools/setuptools.html#using-find-packages

希望对您有所帮助。

【讨论】:

  • 非常感谢您的帮助!不过,我无法使它与这种结构一起使用。我设法通过更改tablesmy_package 文件夹中的位置并在 MANIFEST.in 文件中指定它来使 if 工作。这可能是 python 2-3 的问题吗?
  • 我安装了 python3.4 以确保,文件/文件夹结构 + 我上面粘贴的代码仍然运行良好(结果安装在我的 python 文件夹\lib\site-packages 目录中和确实包含子文件夹表,文件为 my_table.txt。(无论我是否使用了清单)。我对这个网站比较陌生,但希望能够用你的文件进行测试......你能以某种方式分享它们吗? 谢谢。
猜你喜欢
  • 2013-03-08
  • 2018-05-28
  • 2019-11-03
  • 2019-04-13
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2014-07-04
相关资源
最近更新 更多