Python 在conda/pip中安装单个文件包需要冗余的导入语句

Python 在conda/pip中安装单个文件包需要冗余的导入语句,python,pip,python-import,conda,python-packaging,Python,Pip,Python Import,Conda,Python Packaging,我已经创建了一个发布到pypi.org的python包。包由单个.py文件组成,该文件与包同名 在conda或标准python环境中通过pip(pip install package_name)安装包后,我必须使用以下语句从此模块导入函数: from package_name.package_name import function_x 如何重新组织包或调整安装命令,以便使用导入语句 from package_name import function_x 我通过python setup.py

我已经创建了一个发布到pypi.org的python包。包由单个.py文件组成,该文件与包同名

在conda或标准python环境中通过pip(
pip install package_name
)安装包后,我必须使用以下语句从此模块导入函数:

from package_name.package_name import function_x
如何重新组织包或调整安装命令,以便使用导入语句

from package_name import function_x
我通过
python setup.py install
安装时成功使用了它

下面是我的setup.py

setup(
    name = "package_name",
    version = "...",
    packages=find_packages(exclude=['examples', 'docs', 'build', 'dist']),

)

将设置参数从使用包更改为使用py_模块,例如

setup(
    name = "package_name",
    version = "..",
    py_modules=['package_name'],
)

这里记录了这一点

您显然要求
setuptools
构建包含模块的软件包,而不仅仅是安装模块。如果您没有明确地执行此操作,可能是因为您正在使用
find_packages
搜索整个源代码树并查找所有包。如果您只有一个文件,那么不使用它可能比让它作为一个平面模块查找您的模块更容易。我唯一能想到的另一种可能性是,您有一个
包名
目录,其中包含一个
\u init\u.py
和一个名为
包名.py
.py的模块文件,
\uuuu init\uuuuuuuuuuuuuuupy
正在尝试从模块导入和重新导出所有内容,但不知何故,您得到了
设置工具
,要么忽略
\uuuuuuuuuuuuuuuuuupy
要么替换它。但这似乎不太可能是你的问题。谢谢@abarnert。这是因为我在设置参数中使用的是包而不是py_模块!