我创建了一个python包。
在一些互联网资源(包括https://github.com/pypa/sampleproject)的建议下,我已经像这样设置了目录结构:
root_dir
├── bin
│ └── do_stuff.py
├── MANIFEST.in
├── README.md
├── my_lib
│ ├── __init__.py
│ ├── __main__.py
│ └── my_lib.py
├── setup.cfg
├── setup.py
├── important_script.py
└── tests
├── __init__.py
└── test_lib.py
我已在清单中包含tests
,bin
和important_script.py
,并将include_package_data
中的setup.py
设置为True。
但是,运行pip install root_dir
后,我看到它正确安装了my_lib
,但是bin
和tests
只是直接放在Lib/site-packages
中,就像它们是单独的软件包一样。
我根本找不到important_script.py
,而且我认为它没有安装。
如何在安装中正确包含这些文件/目录?
编辑
因此,事实证明bin
和tests
目录直接放置在site-packages
目录中是由我之前所做的事情引起的,但是我无法发现是什么。在某个时候,在我的build
中生成了一个dist
和一个root_dir
目录(我假设是pip或setuptools吗?),此后我对该项目所做的任何更改实际上并未显示在已安装的软件包中。删除这些目录后,我不再能够重现该特定问题。但是,我仍然无法安装important_script.py
。
bin
也不分发tests
,甚至不分发explicitly excludes tests
。要包含tests
,您应该使用bin
或scripts
(例如在示例项目中)。将此添加到您的scripts
至entry_points
通话中:
entry_points
要包含setup.py
,您应该重组树以将目录setup()
包含在包目录下:
scripts=['bin/do_stuff.py'],