Python安装在本地目录中。

我的目录树如下所示:

(local directory)/site-packages/toolkit/interface.py

我的代码在这里:

(local directory)/site-packages/toolkit/examples/mountain.py

为了运行该示例,我编写了python mountain.py ,并且在代码中有:

from toolkit.interface import interface

我得到错误:

Traceback (most recent call last):File "mountain.py", line 28, in ?from toolkit.interface import interface
ImportError: No module named toolkit.interface

我已经检查过sys.path并且那里有目录/site-packages 。 另外,我在toolkit文件夹中有文件__init__.py.bin ,以向Python指示这是一个软件包。 我在示例目录中也有一个__init__.py.bin

我不知道为什么在sys.path时Python无法找到该文件。 有任何想法吗? 可以是权限问题吗? 我需要执行许可吗?


#1楼

就我而言,问题是我链接到调试 pythonboost::Python ,它要求扩展名是FooLib_d.pyd ,而不仅仅是FooLib.pyd ; 重命名文件或更新CMakeLists.txt属性CMakeLists.txt该错误。


#2楼

  1. 您必须在与要导入文件相同的目录中拥有文件__ init__.py。
  2. 您不能尝试从PYTHONPATH上配置的2个文件夹中导入具有相同名称的文件。

例如:/ etc / environment

PYTHONPATH = $ PYTHONPATH:/ opt /文件夹1:/ opt /文件夹2

/ opt / folder1 / foo

/ opt / folder2 / foo

并且,如果您尝试导入foo文件,python将不知道您要哪个。

从foo import ... >>> importerror:没有名为foo的模块


#3楼

我在LPTHW中进行此练习时遇到了非常相似的事情。 我永远无法让Python识别出我正在从其调用的目录中有文件。 但是我最终能够使它工作。 我所做的以及我的建议是尝试以下操作:

(注意:从您的第一篇文章中,我假设您使用的是基于* NIX的计算机,并且正在通过命令行运行,因此此建议是针对性的。自从我运行Ubuntu以来,我就是这样做的。

1)将目录(cd)更改为文件所在目录上方的目录。 在这种情况下,您将尝试运行mountain.py文件,并尝试调用在单独目录中的toolkit.interface.py模块。 在这种情况下,您将转到包含两个文件路径的目录(或换句话说,这两个文件的路径共享的最近目录)。 在这种情况下,该目录是toolkit目录。

2)在tookit目录中时,在命令行上输入以下代码行:

export PYTHONPATH=.

这会将您的PYTHONPATH设置为“。”,这基本上意味着您的PYTHONPATH现在将在您当前所在目录(甚至更重要的是,您所在目录的子目录分支)中查找所有被调用的文件。因此,它不只是看在你的当前目录,但在所有的, 您的当前目录)的目录。

3)在上述步骤中设置PYTHONPATH之后,请从当前目录( toolkit目录)运行模块。 Python现在应该找到并加载您指定的模块。

希望这可以帮助。 我自己对此感到非常沮丧。


#4楼

Linux:导入的模块位于/usr/local/lib/python2.7/dist-packages中

如果您使用的是用C语言编译的模块,请不要忘记在sudo setup.py install之后对.so文件进行chmod。

sudo chmod 755 /usr/local/lib/python2.7/dist-packages/*.so

#5楼

在经历了同样的问题后,我发现我的解决方法是从项目中删除所有pyc文件,似乎这些缓存的文件以某种方式导致了此错误。

我发现最简单的方法是在Windows资源管理器中导航到我的项目文件夹,并搜索*.pyc ,然后选择所有( Ctrl + A )并删除它们( Ctrl + X )。

可能我可以通过删除特定的pyc文件来解决问题,但我从未尝试过


#6楼

我的两分钱:

吐:

Traceback (most recent call last):File "bash\bash.py", line 454, in mainimport boshFile "Wrye Bash Launcher.pyw", line 63, in load_modulemod = imp.load_source(fullname,filename+ext,fp)File "bash\bosh.py", line 69, in <module>from game.oblivion.RecordGroups import MobWorlds, MobDials, MobICells, \ImportError: No module named RecordGroups

这让我很困惑-遍历各种帖子,提示丑陋的syspath hacks(如您所见,我的__init__.py都在那里)。 好吧,事实证明game / oblivion.py和game / oblivion使python混淆了,它吐出了相当无用的“没有名为RecordGroups的模块”。 我对解决此问题和/或记录此(相同名称)行为的链接感兴趣->编辑(2017.01.24)-看看如果我具有相同名称的模块和软件包怎么办? 有趣的是,通常程序包具有优先权,但显然我们的启动器违反了这一点。

编辑(2015.01.17):我没有提到我们使用此处剖析的自定义启动器 。


#7楼

要将目录标记为包,您需要一个名为__init__.py的文件,这有帮助吗?


#8楼

是否

(local directory)/site-packages/toolkit

有一个__init__.py吗?

为了使通过你的目录导入步行每个目录必须有一个__init__.py文件。


#9楼

根据您对orip帖子的评论,我想这是发生了什么:

  1. 您在Windows上编辑了__init__.py
  2. Windows编辑器添加了一些不可打印的内容,也许是回车符(Windows中的行尾是CR / LF;在Unix中是LF),或者是CTRL-Z(Windows文件末尾)。
  3. 您使用WinSCP将文件复制到Unix框中。
  4. WinSCP认为:“这不是基本文字;我将添加.bin扩展名以指示二进制数据。”
  5. 缺少__init__.py (现在称为__init__.py.bin )表示Python不明白的工具包一个包。
  6. 您在适当的目录中创建__init__.py ,一切正常...?

#10楼

我解决了自己的问题,并将总结出错误的地方和解决方案:

该文件需要精确地称为__init__.py 。 如果扩展名不同(例如在我的情况下为.py.bin则Python无法在目录中移动,因此找不到模块。 要编辑文件,您需要使用Linux编辑器,例如vi或nano 。 如果您使用Windows编辑器,则会写一些隐藏的字符。

另一个影响它的问题是我的根目录安装了另一个Python版本,因此,如果有人正在使用python的本地安装,请确保运行程序的Python安装是本地Python。 要检查这一点,只需执行which python ,然后查看可执行文件是否在您本地目录中即可。 如果不是,请更改路径,但请确保本地Python目录位于另一个Python目录之前。


#11楼

我遇到了同样的问题: Import error 。 此外,该库已正确安装了100%。 问题的根源是在我的PC 3版本上安装了python(anaconda数据包)。 这就是为什么没有将库安装到正确的位置的原因。 之后,我只是在我的IDE PyCharm中更改为python的正确版本。


#12楼

通过编写print (sys.path)修复了我的问题,发现尽管进行了全新安装,python仍在使用过期软件包。 删除这些使python自动使用正确的软件包。


#13楼

我有同样的错误。 这是因为有人在与脚本相同的文件夹中创建了一个文件夹,该文件夹的名称与我从其他位置导入的模块冲突。 它没有导入外部模块,而是查看了该文件夹内部,该文件夹显然不包含预期的模块。


#14楼

使用PyCharm (JetBrains套件的一部分),您需要将脚本目录定义为Source:
Right Click > Mark Directory as > Sources Root


#15楼

对。 您需要该目录包含__init__.py文件,该文件是用于初始化程序包的文件。 在这里,看看这个 。

__init__.py文件是使Python将目录视为包含包所必需的; 这样做是为了防止具有通用名称(例如字符串)的目录无意间隐藏了稍后在模块搜索路径中出现的有效模块。 在最简单的情况下,__init__.py可以只是一个空文件,但它也可以为该程序包执行初始化代码或设置__all__变量,如后所述。


#16楼

如果您尝试了上面提供的所有方法但都失败了,则也许您的模块内置模块具有相同的名称 。 或者,存在于文件夹中的同名模块在sys.path比模块具有更高的优先级。

要进行调试,请说您from foo.bar import baz抱怨ImportError: No module named bar 。 更改为import foo; print foo import foo; print foo ,它将显示foo的路径。 是您所期望的吗?

如果不是,请重命名foo或使用absolute imports 。


#17楼

一个简单的解决方案是使用python -m pip install <library-name>而不是pip install <library-name>安装模块,如果受管理员限制,可以使用sudo


#18楼

我的问题是,实际上需要添加其父目录时,我已将带有__init__.py文件的目录添加到PYTHONPATH。


#19楼

我遇到了同样的问题(Python 2.7 Linux),我找到了解决方案,我想分享一下。 就我而言,我的结构如下:

Booklet
-> __init__.py
-> Booklet.py
-> Question.py
default
-> __init_.py
-> main.py

在“ main.py”中,我尝试了以下所有组合,但均未成功:

from Booklet import Question
from Question import Question
from Booklet.Question import Question
from Booklet.Question import *
import Booklet.Question
# and many othet various combinations ...

解决方案比我想象的要简单得多。 我将文件夹“ Booklet”重命名为“ booklet”,仅此而已。 现在,Python可以通过在“ main.py”中使用以下代码来正常导入Question类:

from booklet.Booklet import Booklet
from booklet.Question import Question
from booklet.Question import AnotherClass

由此我可以得出结论,像“小册子”之类的包名称(文件夹)必须以小写字母开头,否则Python会将其与类名和文件名混淆。

显然,这不是您的问题,但是John Fouhy的回答非常好,并且该线程几乎可以导致此问题。 因此,这是一回事,我希望这可以对其他人有所帮助。


#20楼

就我而言,我要包含package.egg文件夹的路径,而不是其下面的实际软件包。 我将软件包复制到顶层,并且可以正常工作。


#21楼

在* nix上,还要确保正确配置了PYTHONPATH,尤其是它具有以下格式:

 .:/usr/local/lib/python

(请注意开头的.: ,以便它也可以在当前目录中搜索。)

它也可能在其他位置,具体取决于版本:

 .:/usr/lib/python.:/usr/lib/python2.6.:/usr/lib/python2.7 and etc.

#22楼

您正在阅读此答案,指出__init__.py在正确的位置,您已经安装了所有依赖项,并且仍在获取ImportError

我遇到了类似的问题,除了我的程序在使用PyCharm运行时可以正常运行,但是当我从终端运行它时出现了上述错误。 进一步挖掘之后,我发现PYTHONPATH没有项目目录的条目。 因此,我在PyCharm上对每个Import语句设置了PYTHONPATH , 但没有从terminal进行设置 :

export PYTHONPATH=$PYTHONPATH:`pwd`  (OR your project root directory)

使用sys.path的另一种方法是:

import sys
sys.path.insert(0,'<project directory>') OR
sys.path.append('<project directory>')

您可以根据要搜索项目的顺序使用插入/追加。


#23楼

就我而言,因为我正在使用PyCharm和PyCharm在项目文件夹中为每个项目创建一个“ venv”,但这只是python的一个迷你环境。 尽管您已经在Python中安装了所需的库,但是在您的自定义项目“ venv”中,该库不可用。 这是PyCharm中发生“导入错误:没有名为xxxxxx的模块”的真正原因。 要解决此问题,必须通过以下步骤将库添加到项目自定义环境中:

  • 在PyCharm中,从菜单“文件”->“设置”
  • 在设置对话框中,项目:XXXProject->项目解释器
  • 点击“添加”按钮,它将显示“可用包”对话框
  • 搜索您的库,单击“安装软件包”
  • 然后,所有需要的软件包将安装在项目自定义“ venv”文件夹中。

请享用。


#24楼

这对我__init__.py :在父文件夹中创建__init__.py文件(在您的情况下,在site-packages文件夹中)。 并像这样导入:

from site-packages.toolkit.interface import interface

希望它对您也有用!


#25楼

对于所有仍然有此问题的人。 我相信Pycharm与进口商品混淆了。 对我来说,当我写“从名称空间导入某物”时,前一行用红色下划线标出,表示有错误,但可以。 但是,“从.namespace导入某些内容”不会带有下划线,但也无法正常工作。

尝试

try:from namespace import something
except NameError:from .namespace import something

#26楼

对我来说,那真是愚蠢。 我使用pip3 install安装了该库,但是将程序作为python program.py运行,而不是python3 program.py 。 就像有时候¯\\_(ツ)_/¯

Python错误“ ImportError:未命名模块”相关推荐

  1. Python错误“ImportError: No module named MySQLdb”解决方法

    Python错误"ImportError: No module named MySQLdb"解决方法 参考文章: (1)Python错误"ImportError: No ...

  2. python错误 ImportError: No module named setuptools 解决方法[转]

    在python运行过程中出现如下错误: python错误:ImportError: No module named setuptools 这句错误提示的表面意思是:没有setuptools的模块,说明 ...

  3. 【Python】Python错误、异常和模块(长文系列第4篇)

    系列第四篇主要讲两方面,错误和异常以及模块.在编程时遇见错误信息在所难免,Python中会也有很多种错误信息,常见的两种就是语法错误和逻辑错误,逻辑错误的种类有很多,占据了异常中大部分位置,下面就开始 ...

  4. 牛逼!Python错误、异常和模块(长文系列第4篇)

    系列第四篇主要讲两方面,错误和异常以及模块.在编程时遇见错误信息在所难免,Python中会也有很多种错误信息,常见的两种就是语法错误和逻辑错误,逻辑错误的种类有很多,占据了异常中大部分位置,下面就开始 ...

  5. python错误提示未定义tn_python程序中的全局名称错误[关闭]

    我有这样的代码: #!/usr/bin/python # -*- coding: utf-8 -*- import tkMessageBox as box import time from tkFil ...

  6. 明明安装了模块,还是出现 错误 ImportError: No module named ‘pandas‘ 原因LINUX上安装了多个python环境,将脚本中python 改为python3问题解

    明明安装了模块,还是出现 错误 ImportError: No module named 'pandas'  原因LINUX上安装了多个python环境,将脚本中python 改为python3问题解 ...

  7. python导入模块报错syntaxerror_SyntaxError: invalid syntax python错误解决方法

    今天爱分享给大家带来SyntaxError: invalid syntax python错误解决方法,希望能够帮助到大家. "SyntaxError: invalid syntax" ...

  8. 层自动命名模块检测未通过

    用PADS画好PCB以后,导出的GerBer文件上传至嘉立创打板时,出现解析失败的情况. 错误提示:层自动命名模块检测未通过 这其实是我们在GerBer文件输出时,对文件名命名不规范造成的. 我将文件 ...

  9. python使用os和shutil模块进行文件创建,删除,移动,复制,重命名

    python使用os和shutil模块进行文件创建,删除,移动,复制,重命名 文章目录: 1 os模块的使用 1.1 os不带path 1.1.1 os.sep 属性:返回系统路径分隔符 1.1.2 ...

最新文章

  1. 深度学习在情感分析中的应用
  2. 伊利诺伊香槟分校计算机科学,伊利诺伊大学香槟分校计算机科学与工程世界排名2019年最新排名第24(ARWU世界排名)...
  3. java调用net webservice_java调用.net的webservice
  4. Mac OS X中配置Apache
  5. 使用LayoutAnimationController为RecyclerView添加动画
  6. android 撑满剩余空间,怎么让LinearLayout占据父布局的所有剩余空间
  7. 早知道就好了!这些编程入门神器,赶紧用起来
  8. 预防xml注入漏洞攻击_预防性编程-漏洞发生前如何修复
  9. Flutter AnimatedOpacity 实现透明度渐变动画效果
  10. window.postMessage 跨窗口,跨iframe javascript 通信
  11. OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常
  12. H3C配置PPP协议
  13. securiteCRT中退出全屏
  14. QGraphicsView实现局部缩放,平移,并且能进行选中数据
  15. Altium Designer 详细入门教程-原理图绘画-AD2016
  16. 计算机组成原理:P5-存储器(下)
  17. 最伟大IT人物10强出炉 乔布斯第一盖茨第三
  18. 蓝屏错误处理通用步骤附个人蓝屏解决步骤
  19. H5调用Android原生Api
  20. 鬼谷子谋略之空手套白狼

热门文章

  1. [置顶] 安卓高手之路之 WindowManager
  2. Skia的SkCamera.cpp的doUpdate() 算法。
  3. https refused 解决方法
  4. 第五周项目四-长方柱型(2)
  5. Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发
  6. Android 如何从系统图库中选择图片
  7. 虚拟服务器系统一般用那种,虚拟主机 选什么系统
  8. java 获取聚合vo_NC57聚合VO写法
  9. 互联网思维-产品思维(1)
  10. Java学习笔记18