【发布时间】:2018-12-19 13:55:41
【问题描述】:
在一个python项目上工作,我尝试将源代码和单元测试分开;这是项目结构:
MyProject/
MANIFEST.in
README.md
setup.py
source/
__init.py__
my_project/
__init.py__
some_module.py
test/
__init.py__
my_project/
__init.py__
test_some_module.py
这里是setup.py 文件:
from setuptools import setup, find_packages
setup(
name='my_project',
packages=find_packages(where='./source'),
description='My project to be packaged',
version='1.0.0',
author='me'
install_requires=[
'fastnumbers~=2.0.1',
'numpy~=1.14.1',
'pandas~=0.22.0'
],
extras_require={
'dev': ['check-manifest'],
'test': [
'mock',
'PyHamcrest',
'pytest',
'pytest-cov'
],
}
)
然后,当我运行命令 python3 setup.py sdist 时,它会失败并显示以下输出:
running sdist
running egg_info
writing my_project.egg-info/PKG-INFO
writing requirements to my_project.egg-info/requires.txt
writing dependency_links to my_project.egg-info/dependency_links.txt
writing top-level names to my_project.egg-info/top_level.txt
error: package directory 'my_project' does not exist
生成的top_level.txt 文件看起来不错:
my_project
但看起来setuptools 不是从source 文件夹开始查找要打包的模块。
- 我是否必须将
setup.py和MANIFEST.in文件移动到source文件夹中? - 那么,
where在setuptools.find_packages函数中的参数是什么?
【问题讨论】:
-
看来
where函数正在定义包目录,即setuptools.find_packages应该在哪里查看 -
我认为这实际上可以通过在源后添加
/来表示它是一个目录来解决? -
@RBalasubramanian:在
/后面添加'./source/'无效
标签: python setuptools packaging