Python setuptools:打包根目录(每个包不需要子目录)
我需要将一个包写入存储库,但它是一个小的快速包,因此我认为没有必要将文件放入子目录。我只想:Python setuptools:打包根目录(每个包不需要子目录),python,setuptools,python-packaging,Python,Setuptools,Python Packaging,我需要将一个包写入存储库,但它是一个小的快速包,因此我认为没有必要将文件放入子目录。我只想: 导入mypkg.module1 具有目录结构 root_folder/ - setup.py - __init__.py # the init for package "mypkg" (empty) - module1.py 我不想被限制在增加文件夹层次结构上,如下所示: root\u文件夹/ -setup.py -mypkg/#为什么我要为一个模块这么
导入mypkg.module1
具有目录结构
root_folder/
- setup.py
- __init__.py # the init for package "mypkg" (empty)
- module1.py
我不想被限制在增加文件夹层次结构上,如下所示:
root\u文件夹/
-setup.py
-mypkg/#为什么我要为一个模块这么做??
-_uuuinit_uuuuu.py
-模块1.py
#setup.py的内容
从设置工具导入设置
安装程序(name='MyPkg',
软件包=['mypkg']
package_dir={'mypkg':'.'.})
但结果是,import mypkg
失败,import module1
工作,而不是所需的import mypkg.module1
我找到了,但是“只需向上移动setup.py一个文件夹”的答案不适合我
找到设置参数文档后,我尝试定义一个名称空间包:
#带有名称空间包的setup.py的内容
从设置工具导入设置
安装程序(name='MyPkg',
packages=['thisdir']
package_dir={'thisdir':'.'.},
名称空间_packages=['mypkg'])
如果不进行测试,我认为类似的方法可能会奏效:
#/usr/bin/env蟒蛇3
导入设置工具
setuptools.setup(
name='MyPkg',
version='0.0.0.dev0',
软件包=['mypkg'],
包裹目录={
“mypkg”:“,
},
)
最大的问题是,据我记忆所及,您最终也会在包mypkg
中找到setup.py
,因此import mypkg.setup
确实会导入setup
模块。我还没有核实
另一个大问题是,与大多数package\u dir
修改一样,“开发/编辑”安装很可能根本不起作用
但结果是,
import mypkg
失败,并且import module1
工作,而不是所需的import mypkg.module1
如果项目没有实际安装,并且当前工作目录是项目的根目录,我可以想象会发生这种情况
要想成功导入mypkg,您必须确保项目安装正确(python-mpipinstall.
)
要使导入模块1失败,您可能需要更改到其他目录
相关的:
py_模块
感兴趣。哦,在测试之前,我忘了转到另一个目录。。。我用来安装的命令是python3 setup.py develope--user-N
。我来看看你的建议。关于导入安装程序的观点很好,谢谢。您确实应该使用python-m pip安装--可编辑。
(而不是setup.py develope
)。--而且,无论如何,这对可编辑/开发安装也不起作用,您可以忽略它。我在其中一个相关问题中对此进行了详细阐述。