使用pip安装时找不到当前文件夹中的文件

时间:2020-02-06 18:07:33

标签: python pip setuptools

带有入口点的Python模块(与here相同)。 __main__文件将导入另一个文件:

from myfile import MyClass

myfile.py是同一文件夹mymodule中的文件。它包含名为MyClass的类。如果我运行python3 __main__.py,则可以在常规Python下使用。

现在,我已经在MacOS X上将mymodulesudo pip3 install .作为模块安装了(编辑:在Linux上是相同的错误)。当我从命令行运行mymodule时,我的文件名是ModuleNotFoundError

Traceback (most recent call last):
File "/Users/valekseyev/.pyenv/versions/3.7.3/bin/mymodule", line 11, in <module>
load_entry_point('mymodule==0.50', 'gui_scripts', 'mymodule')()
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2793, in load_entry_point
return ep.load()
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2411, in load
return self.resolve()
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2417, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/mymodule/__main__.py", line 5, in <module>
from myfile import MyClass
ModuleNotFoundError: No module named 'myfile'

文件myfile.py__main__.py下的/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/mymodule/旁,我检查过。文件夹中也有一个__init__.py,它是空白的。该文件夹在packages的{​​{1}}下列出。

请问发生了什么事?

编辑:查看其中的Python模块,它们使用以下语法从同一文件夹导入其他文件:

setup.py

如果我尝试这样做,则常规Python运行会中断:

ImportError:尝试了相对导入,但没有已知的父包

也许可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

找到一种解决方法。我在文件名前加上。在导入行中,向上创建一个文件(与setup.py处于同一级别),该文件会将mymodule文件夹视为一个包:

from mymodule.__main__ import main
main()

,我可以运行它。我还面临另一个问题(库模块优先于修补版本),但不是这个问题:)