ImportError:没有名为...的模块(但我有__init__.py文件并设置了PYTHONPATH)

时间:2019-04-11 06:15:58

标签: python

我知道这个问题是一遍又一遍地问的,但是在这里查看所有类似的问题,我似乎找不到任何答案,这些答案与我已经尝试过的答案有很大不同……很抱歉,如果真的是重复的话。 / p>

我有一个简单的python程序包,名为“蛤”。但是,当我尝试从中导入模块时,出现ImportError:没有名为...错误的模块。

但是,如果我直接导​​入模块,不会出现错误:

import libClam  <-- this works.

我在这里查看了许多类似的问题,以查看我做错了什么,但是它们似乎都建议执行我已经做过的事情(将PYTHONPATH设置为指向我要导入的模块的父目录) AND添加一个名为:

的空文件

__init__.py

位于该目录中的

)。我也倒在了这个页面上:

https://docs.python.org/2/tutorial/modules.html

(特别是6.4包部分)

这是我的shell的简短输出:

bvz@manjaro-xps15:~/Documents/dev/clam$ pwd
/home/bvz/Documents/dev/clam

bvz@manjaro-xps15:~/Documents/dev/clam$ ls -l
total 56
-rwxrwxrwx 1 bvz users   348 Apr  7 14:48 clamError.py
-rw-r--r-- 1 bvz users   769 Apr  7 14:48 clamError.pyc
-rw-r--r-- 1 bvz users     0 Apr 10 22:23 __init__.py
-rw-r--r-- 1 bvz users   127 Apr  3 20:10 __init__.pyc
-rwxrwxrwx 1 bvz users  7782 Apr 10 22:32 libClam.py
-rw-r--r-- 1 bvz users  7006 Apr 10 22:32 libClam.pyc
-rwxrwxrwx 1 bvz users 13602 Apr 10 19:06 libClarisse.py
-rw-r--r-- 1 bvz users 11585 Apr 10 22:19 libClarisse.pyc
-rwxrwxrwx 1 bvz users     0 Apr  7 12:28 parking.py

bvz@manjaro-xps15:~/Documents/dev/clam$ cat __init__.py

bvz@manjaro-xps15:~/Documents/dev/clam$ env | grep PYTHONPATH
PYTHONPATH=/home/bvz/Documents/dev/squirrel:/home/bvz/Documents/dev/clam:

bvz@manjaro-xps15:~/Documents/dev/clam$ python2
Python 2.7.15 (default, Jan 10 2019, 23:20:52) 
[GCC 8.2.1 20181127] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/bvz/Documents/dev/squirrel', '/home/bvz/Documents/dev/clam', '/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/setuptools-39.1.0-py2.7.egg']
>>> import clam.libClam
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named clam.libClam
>>> from clam import libClam
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named clam
>>> import libClam
>>> 

注意简单语句的最后一行:

import libClam

有效。因此,显然我已经成功设置了PYTHONPATH,但是以某种方式它无法将父目录识别为包。

python 3.7是此计算机上的默认安装(即,如果我键入“ python”,则会得到一个python 3.7会话)。但是此代码需要在仍限于python 2.7的DCC程序包中运行。这可能是问题的一部分吗?

对于这个问题的非常基本的性质,我感到抱歉,但是即使试图进行我所有的尽职调查和研究,我仍然空白。谢谢。

1 个答案:

答案 0 :(得分:0)

导入应相对于运行Python的目录。由于您当前的工作目录已经在clam内部,因此您不应在导入中包括它。而是:

import libClam