我正在尝试在OS X 10.8.4上运行matplotlib并运行.我已经安装了matplotlib和依赖项(libping,freetype,numpy,scipy).我能够很好地导入matplotlib.但是,如果我尝试导入matplotlib.pyplot,它就会挂起.没有错误,只是没有任何反应.
>>> import matplotlib.pyplot
Run Code Online (Sandbox Code Playgroud)
......我已经等了20分钟,没有任何反应.我使用的是1.2.1版本,但即使卸载并尝试了1.2.0版本,但无济于事.我已经在matplotlib.pyplot上看到了关于导入错误的一些问题,但没有任何关于它的问题.然后,我尝试使用Enthought/Canopy python发行版使其工作,但同样,同样悬而未决的问题.如果我杀了导入,这就是我看到的:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/pyplot.py", line 26, in <module>
from matplotlib.figure import Figure, figaspect
File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/figure.py", line 34, in <module>
import matplotlib.colorbar as cbar
File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/colorbar.py", line 29, in <module>
import matplotlib.collections as collections
File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/collections.py", line 23, in <module>
import matplotlib.backend_bases as backend_bases
File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/backend_bases.py", line 37, in <module>
import matplotlib.widgets as widgets
File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/widgets.py", line 17, in <module>
from lines import Line2D …Run Code Online (Sandbox Code Playgroud) 假设我有一个python项目,结构如下:
project
/data
test.csv
/package
__init__.py
module.py
main.py
Run Code Online (Sandbox Code Playgroud)
__init__.py:
from .module import test
Run Code Online (Sandbox Code Playgroud)
module.py:
import csv
with open("..data/test.csv") as f:
test = [line for line in csv.reader(f)]
Run Code Online (Sandbox Code Playgroud)
main.py:
import package
print(package.test)
Run Code Online (Sandbox Code Playgroud)
当我运行时,main.py我收到以下错误:
C:\Users\Patrick\Desktop\project>python main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
import package
File "C:\Users\Patrick\Desktop\project\package\__init__.py", line 1, in <module>
from .module import test
File "C:\Users\Patrick\Desktop\project\package\module.py", line 3, in <module>
with open("../data/test.csv") as f:
FileNotFoundError: [Errno 2] No such file or directory: …Run Code Online (Sandbox Code Playgroud) 我认为将import语句放在靠近使用它的片段上有助于通过使其依赖关系更加清晰来实现可读性.Python会缓存吗?我应该关心吗?这是一个坏主意吗?
def Process():
import StringIO
file_handle=StringIO.StringIO('hello world')
#do more stuff
for i in xrange(10): Process()
Run Code Online (Sandbox Code Playgroud)
更合理一点:它是用于使用库的神秘位的方法,但是当我将该方法重构为另一个文件时,我没有意识到我错过了外部依赖,直到我遇到运行时错误.
在Python中,究竟是什么import *导入的?它是否__init__.py在包含文件夹中导入?
例如,是否有必要申报from project.model import __init__或from project.model import *足够?
当使用__import__带点名称时,类似于:somepackage.somemodule,返回的模块不是somemodule,返回的任何内容似乎都是空的!这里发生了什么?
是否可以将Python模块导入Jinja模板,以便我可以使用它的功能?
例如,我有一个format.py文件,其中包含格式化日期和时间的方法.在神社宏,我可以做一些像下面?
{% from 'dates/format.py' import timesince %}
{% macro time(mytime) %}
<a title="{{ mytime }}">{{ timesince(mytime) }}</a>
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
因为format.py不是模板,上面的代码给出了这个错误:
UndefinedError: the template 'dates/format.py' (imported on line 2 in 'dates/macros.html') does not export the requested name 'timesince'
Run Code Online (Sandbox Code Playgroud)
......但我想知道是否还有另一种方法来实现这一目标.
我正在使用django,我有一个名为models.admin.py的文件,我想在models.py中做以下想法:
from "models.admin" import *
Run Code Online (Sandbox Code Playgroud)
但是,我得到双引号的语法错误.但是如果我这样做的话
from models.admin import *
Run Code Online (Sandbox Code Playgroud)
然后我得到"ImportError:没有名为admin的模块"
有没有办法从名称中有句号的python文件导入?
我一直看到网站提到你执行'python'的目录被添加到python路径.例如在http://www.stereoplex.com/blog/understanding-imports-and-pythonpath上,作者cd到/ tmp文件夹然后执行'print(sys.path)'并且看看/ tmp文件夹出现在路径列表中.这是我在我的系统上尝试这个(安装2.6.6):
示例结构:
app/
mymodule.py
inner_folder/
myscript.py
Run Code Online (Sandbox Code Playgroud)
在myscript.py中包含以下行:
import 'mymodule.py'
Run Code Online (Sandbox Code Playgroud)
我做了什么:
cd app
python inner_folder/myscript.py # ImportError
Run Code Online (Sandbox Code Playgroud)
由于我从app /目录执行解释器,不应该将'app'放到python路径上吗?这就是我读过的很多文档都指明了行为应该如何.
请指教!
(我暂时通过手动将我想要的文件夹添加到环境中但不想永远依赖它来解决这个问题.因为许多网站都说可以这样做,我想为自己重现它)
假设我们有两个具有循环依赖关系的模块:
# a.py
import b
def f(): return b.y
x = 42
Run Code Online (Sandbox Code Playgroud)
# b.py
import a
def g(): return a.x
y = 43
Run Code Online (Sandbox Code Playgroud)
这两个模块在目录pkg中为空__init__.py.导入pkg.a或pkg.b正常工作,如本答案中所述.如果我将导入更改为相对导入
from . import b
Run Code Online (Sandbox Code Playgroud)
我ImportError试图导入其中一个模块时得到一个:
>>> import pkg.a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pkg/a.py", line 1, in <module>
from . import b
File "pkg/b.py", line 1, in <module>
from . import a
ImportError: cannot import name a …Run Code Online (Sandbox Code Playgroud) 我注意到Flask正在使用Werkzeug来__import__模块,我有点困惑.我去检查过了它的文档,发现它似乎以某种方式给你的地方查找模块方面更多的控制,但我不知道究竟怎么和为零的想法它是如何从不同的importlib.import_module.
Werkzeug示例中的奇怪之处在于它只是说__import__(import_name),所以我看不出与使用该import语句有什么不同,因为它忽略了可选的额外参数.
谁能解释一下?我看了之前在SO上提出类似问题的其他人,但他们的问题并不是很清楚,答案根本没有解决这个问题.
python ×10
python-import ×10
cyclic ×1
import ×1
io ×1
jinja2 ×1
matplotlib ×1
module ×1
namespaces ×1
package ×1
python-3.x ×1