python - setup.py 中的 package_dir 未按预期工作
问题描述
我试图让用户在他们认为合适的任何文件夹名称下将代码编写为 python 模块(定义了 __init__.py 的文件夹)。之后,我想将该模块安装为 python 包,但自己定义导入名称。
文件夹结构如下:
project_name/
user_defined_name/
__init__.py
...
setup.py
据此,我应该能够将其添加到我的 setup.py 以使其正常工作:
setuptools.setup(
package_dir={'my_defined_name': 'user_defined_name'},
packages=['user_defined_name']
)
但我能够访问代码的唯一方法是使用import user_defined_name
. 我尝试在没有 -e 的情况下安装软件包,但结果相同。离开packages=['..']
设置功能也没有改变结果。
我的问题与这个问题类似,唯一的答案似乎是更改文件夹名称,这是我想避免的。该问题提到这可能是由于 setuptools 中的问题,但在 3 年前似乎已修复。
解决方案
简而言之,您的 : 中似乎需要类似的东西setup.py
:
setuptools.setup(
package_dir={
'my_defined_name': 'user_defined_name',
},
packages=[
'my_defined_name',
],
)
正如Ilia Novoselov在对您的问题的评论中所说的那样。
如果您正常打包和安装项目,这应该可以工作。你将能够import my_defined_name
。
不过,请注意,据我所知,如果您使用可编辑安装(python setup.py develop
或python -m pip install --editable .
),这将不起作用。这将是不可能的import my_defined_name
,但你会能够import user_defined_name
,这不是你想要的。
推荐阅读
- python-3.x - Python - 如何使用多变量重新输入异常?
- ios - 在 Swift 4 中将 UNNotificationAction 添加到 Firebase FCM 推送通知
- html - Laravel:添加数据后如何使用 Laravel 打印票?
- powershell - Invoke-WebRequest:底层连接已关闭:通过代理发送时发生意外错误
- android-linearlayout - 使用线性布局或约束布局的性能差异?
- sql - 在 Teradata SQL 助手中使用 UNION 时字符串缩短
- hadoop - 如何在将数据插入存储桶时合并由配置单元创建的小文件?
- c - 修复数组排序和输出时遇到问题
- dpdk - Fips_validation 请求文件示例
- javascript - 使用 React-spring 为有条件渲染的组件设置动画的问题