如何解决如何从内部运行导出的python包?
我花了几天的时间来了解pip install
的工作流程,现在我知道了列表中的主要问题,我面临着这个import
的问题,我找不到解决方法
我有这个最小的可执行示例:
packagetest/
__init__.py
main.py
aux.py
setup.py
aux.py
class Aux:
def __init__(self,name):
self.name = name
def __str__(self):
return self.name
main.py
from packagetest.aux import Aux
def printAux():
print(Aux('aux1'))
if __name__ == "__main__":
printAux()
setup.py
from setuptools import find_packages,setup
setup(
name='packagetest',version='0.1',packages=find_packages(),)
就是这样。那是我的python包。
然后我运行pip install .
,在另一个项目中,假设project2.py
,我可以调用:
from packagetest import main
main.printAux()
这就是我的输出:
aux1
一切正常,除非并非如此。如果我运行pip uninstall packagetest
,请进入我的packagetest/
文件夹,然后尝试运行python main.py
,我发现此错误:
Traceback (most recent call last):
File "main.py",line 1,in <module>
from packagetest.aux import Aux
ModuleNotFoundError: No module named 'packagetest'
那是因为当我使用packagetest
导入时,我的packagetest
尚未安装,并且python无法找到from packagetest.aux import Aux
。如果我将其更改为from aux import Aux
,则可以正常工作,但是在这种情况下,我将无法使用pip install
导出该项目,因为aux
将不会被识别为模块。我尝试过,并在project2.py
上发现了另一个错误:
Traceback (most recent call last):
File "project2.py",in <module>
from packagetest import main
File "/home/leonardo/.local/lib/python3.8/site-packages/packagetest/main.py",in <module>
from aux import Aux
ModuleNotFoundError: No module named 'aux'
我的问题是如何在不安装我的项目的情况下使它可执行? 我希望导入在这两种情况下都有效,并且不希望我的模块仅在我的软件包安装在pip软件包中的情况下才可执行。我不会克隆回购协议并在新机器上执行项目,而不会被迫通过pip进行安装。
有可能吗?大型项目如何处理?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。