Questions tagged «python-import»

有关在Python中导入模块的问题


6
我应该使用`import os.path`还是`import os`?
根据官方文档,os.path是一个模块。因此,导入它的首选方式是什么? # Should I always import it explicitly? import os.path 要么... # Is importing os enough? import os 请不要回答“ os为我导入作品”。我知道,它现在也对我有效(自python 2.6起)。我想知道的是有关此问题的任何官方建议。因此,如果您回答这个问题,请发表您的参考资料。

1
为什么从__future__ import print_function使用会破坏Python2样式的打印?[关闭]
关闭。这个问题不能重现或由错别字引起。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 我是使用python编程的新手,但我尝试使用分隔符并结束打印,但这仍然给我带来语法错误。 我正在使用python 2.7。 这是我的代码: from __future__ import print_function import sys, os, time for x in range(0,10): print x, sep=' ', end='' time.sleep(1) 这是错误: $ python2 xy.py File "xy.py", line 5 print x, sep=' ', end='' ^ SyntaxError: invalid syntax $

21
没有名为_sqlite3的模块
我试图在运行Debian 5的VPS上运行Django应用程序。运行演示应用程序时,它返回此错误: File "/usr/local/lib/python2.5/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/usr/local/lib/python2.5/site-packages/django/db/backends/sqlite3/base.py", line 30, in <module> raise ImproperlyConfigured, "Error loading %s: %s" % (module, exc) ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3 查看Python安装,它给出了相同的错误: Python 2.5.2 (r252:60911, May 12 2009, 07:46:31) [GCC 4.1.2 …

5
将目录添加到sys.path / PYTHONPATH
我正在尝试从特定目录导入模块。 问题是,如果我使用sys.path.append(mod_directory)追加路径然后打开python解释器,该目录mod_directory将添加到列表sys.path的末尾。如果我PYTHONPATH在打开python解释器之前导出变量,则目录将添加到列表的开头。在后一种情况下,我可以导入模块,但是在前一种情况下,我不能。 有人可以解释为什么会发生这种情况,并给我一个在 python脚本中将其添加mod_directory到开始的解决方案吗?

9
Python鼻子导入错误
我似乎无法获得鼻子测试框架来识别文件结构中测试脚本下的模块。我设置了最简单的示例来演示该问题。我会在下面解释。 这是包文件的结构: ./__init__.py ./foo.py ./tests ./__init__.py ./test_foo.py foo.py包含: def dumb_true(): return True tests / test_foo.py包含: import foo def test_foo(): assert foo.dumb_true() 两个init .py文件均为空 如果我nosetests -vv在主目录(foo.py所在的目录)中运行,则会得到: Failure: ImportError (No module named foo) ... ERROR ====================================================================== ERROR: Failure: ImportError (No module named foo) ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line …

16
检查是否安装了Python软件包
检查软件包是否在Python脚本中安装的好方法是什么?我知道从解释器很容易,但是我需要在脚本中完成。 我想我可以检查安装过程中在系统上是否创建了目录,但是我觉得有更好的方法。我试图确保已安装Skype4Py软件包,如果没有,我将安装它。 我完成支票的想法 检查典型安装路径中的目录 尝试导入软件包,如果抛出异常,则安装软件包

8
导入模块中全局变量的可见性
我在使用Python脚本导入模块时遇到了一些麻烦。我将尽力描述错误,为什么会遇到错误以及为什么要使用这种特殊方法来解决我的问题(我将在稍后描述): 假设我有一个模块,其中定义了一些实用程序函数/类,这些函数/类引用在此辅助模块将导入到的命名空间中定义的实体(让“ a”是这样的实体): 模块1: def f(): print a 然后,我有了主程序,其中定义了“ a”,我要将这些实用程序导入其中: import module1 a=3 module1.f() 执行该程序将触发以下错误: Traceback (most recent call last): File "Z:\Python\main.py", line 10, in <module> module1.f() File "Z:\Python\module1.py", line 3, in f print a NameError: global name 'a' is not defined 过去(两天前,d'uh)曾提出过类似的问题,并提出了几种解决方案,但是我真的不认为这些符合我的要求。这是我的特定情况: 我正在尝试制作一个Python程序,该程序连接到MySQL数据库服务器并使用GUI显示/修改数据。为了简洁起见,我在一个单独的文件中定义了一堆与MySQL相关的辅助/实用程序功能。但是它们都有一个公共变量,该变量是我最初在实用程序模块中定义的,并且是MySQLdb模块中的游标对象。后来我意识到,游标对象(用于与db服务器通信的对象)应该在主模块中定义,以便主模块和导入到其中的所有对象都可以访问该对象。 最终结果将是这样的: utilities_module.py: def utility_1(args): code which …

8
ImportError:libSM.so.6:无法打开共享库文件:没有这样的文件或目录
尝试导入OpenCV时,使用import cv2我得到以下错误: /usr/local/lib/python2.7/dist-packages/cv2/__init__.py in <module>() 7 8 # make IDE's (PyCharm) autocompletion happy ----> 9 from .cv2 import * 10 11 # wildcard import above does not import "private" variables like __version__ ImportError: libSM.so.6: cannot open shared object file: No such file or directory 不确定如何解决-尝试使用Google的新协作工具。笔记本在这里:https : //drive.google.com/file/d/0B7-sJqBiyjCcRmFkMzl6cy1iN0k/view?usp=sharing

11
PyDev和Eclipse的未解决的导入问题
我对PyDev和Python还是很陌生,尽管我已经大量使用Eclipse来编写Java。我正在尝试研究一些“ Dive Into Python”示例,这感觉像一个极其琐碎的问题,变得非常烦人。我正在使用Ubuntu Linux 10.04。 我希望能够使用odbchelper.py文件,该文件位于目录中 /Desktop/Python_Tutorials/diveintopython/py 这是我在PyDev / Eclipse项目中正在使用的example.py文件: import sys sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py") 这可以正常工作,但是然后我希望代码的下一行是: import odbchelper 并且这每次都会导致无法解决的导入错误。我已经将__init__.py文件添加到几乎所有可能的目录中,但它无济于事。我尝试一次将__init__.py文件一次添加到项目位置和odbchelper.py文件之间的各个目录级别,并且还尝试同时将__init__.py文件添加到介于两者之间的所有目录中。都不行。 我要做的就是在其他目录中的某个地方有一个项目,例如/Desktop/MyStuff/Project,其中有example.py ...,然后从example.py中导入,我想从中导入odbchelper.py/Desktop/Python_Tutorials/diveintopython/py/ 我可以找到每个留言板响应,只是说要使用该sys.path.append()功能将该目录添加到我的路径,然后将其导入...,但这恰恰是我在代码中所做的,并且不起作用。 我也尝试了Ctrl- 1技巧来抑制错误消息,但该程序仍无法正常运行。我收到一个错误ImportError: No module named odbchelper。因此,显然没有添加路径,或者存在一些我添加__init__.py文件的所有排列都遗漏的问题。 如此简单的事情令人非常沮丧……从我的机器上其他地方存在的文件中调用事物……需要这么多的努力。


5
何时使用os.name,sys.platform或platform.system?
据我所知,Python有3种方法来找出运行什么操作系统: os.name sys.platform platform.system() 知道此信息对于有条件导入或使用不同平台之间的功能(例如,time.clock()在Windows和time.time()UNIX上)通常很有用。 我的问题是,为什么要使用3种不同的方法?什么时候应该使用一种方法而不是另一种方法?哪种方法是“最佳”的(最好是面向未来的,或者最不可能偶然排除程序可以实际运行的特定系统)? 好像sys.platform是更具体的比os.name,让您区分win32来自cygwin(而不是只nt),并linux2从darwin(而不是只posix)。但是,如果是这样,那sys.platform和之间的区别platform.system()呢? 例如,这更好: import sys if sys.platform == 'linux2': # Do Linux-specific stuff 或这个?: import platform if platform.system() == 'Linux': # Do Linux-specific stuff 现在,我将继续坚持sys.platform下去,因此这个问题并不是特别紧迫,但我将非常感谢您对此进行的澄清。

11
Python:相对于当前正在运行的脚本添加到sys.path的最佳方法
我有一个充满脚本的目录(假设project/bin)。我也有一个图书馆project/lib,希望脚本自动加载它。这是我通常在每个脚本顶部使用的内容: #!/usr/bin/python from os.path import dirname, realpath, sep, pardir import sys sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib") # ... now the real code import mylib 这有点麻烦,丑陋,必须粘贴在每个文件的开头。有一个更好的方法吗? 确实,我希望如此平稳: #!/usr/bin/python import sys.path from os.path import pardir, sep sys.path.append_relative(pardir + sep + "lib") import mylib 甚至更好的是,当我的编辑器(或其他拥有提交访问权限的人)决定在其清理过程中对导入进行重新排序时,这些不会中断: #!/usr/bin/python --relpath_append ../lib import …

6
PYTHONPATH vs.sys.path
我和另一位开发人员不同意应该使用PYTHONPATH还是sys.path来允许Python在用户(例如,开发)目录中找到Python包。 我们有一个具有典型目录结构的Python项目: Project setup.py package __init__.py lib.py script.py 在script.py中,我们需要这样做import package.lib。当该软件包安装在site-packages中时,script.py可以找到package.lib。 但是,从用户目录工作时,还需要做其他事情。我的解决方案是将我的PYTHONPATH设置为包括“〜/ Project”。另一位开发人员希望将这行代码放在script.py的开头: sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 以便Python可以找到的本地副本package.lib。 我认为这是一个坏主意,因为该行仅对开发人员或从本地副本运行的人有用,但是我不能给出一个很好的理由,说明它不是一个好主意。 我们应该使用PYTOHNPATH,sys.path还是很好?

9
Python:重新加载用'from X import Y'导入的组件Y?
在Python中,一旦我在解释器会话中使用导入了模块X import X,并且模块在外部进行了更改,就可以使用来重新加载该模块reload(X)。然后,这些更改将在我的解释器会话中可用。 我想知道当我使用从模块X导入组件Y时是否也可行from X import Y? 该语句reload Y不起作用,因为Y本身不是模块,而是模块内部的仅组件(在这种情况下为类)。 是否有可能在不离开解释器会话(或导入整个模块)的情况下重新加载模块的各个组件? 编辑: 为了澄清起见,问题是关于从模块X导入类或函数Y并在更改时重新加载,而不是从包X重新加载模块Y。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.