我刚刚在Windows 7机器上安装了OpenCV.结果,我得到一个新目录:
C:\OpenCV2.2\Python2.7\Lib\site-packages
在这个目录中,我有两个文件:cv.lib和cv.pyd.
然后我尝试使用opencvPython.我做以下事情:
import sys
sys.path.append('C:\OpenCV2.2\Python2.7\Lib\site-packages')
import cv
Run Code Online (Sandbox Code Playgroud)
因此,我收到以下错误消息:
File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
添加
正如在这里推荐的那样,我已将内容复制C:\OpenCV2.0\Python2.6\Lib\site-packages到了C:\Python26\Lib\site-packages.它没有帮助.
增加2
我的环境变量具有以下值:
Path=C:\Program Files\MiKTex\miktex\bin;C:\OpenCV2.2\bin;C:\Python26;
PYTHONPATH=C:\OpenCV2.2\Python2.7\Lib\site-packages
Run Code Online (Sandbox Code Playgroud)
我需要改变什么吗?我需要添加一些东西吗?
增加3
我认为我的问题很普遍:如何使用图书馆?可能我需要在某处找到*.ddl文件?那么我需要使用包含此文件的目录的名称作为某些环境变量的值吗?或者我可能需要使用sys.addpath?我还需要知道调用库的方式与包含库的文件的名称有什么关系.
增加4
有趣的是,当我输入时import cv,我得到:
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
但是当我输入时,import opencv我得到:
ImportError: No module named opencv
Run Code Online (Sandbox Code Playgroud)
增加5
有人建议我使用不一致的python版本.更详细的说,OpenCV尝试使用Python2.7,我有Python2.6.所以,我已经安装了Python …
首先我创造了 __init__.py
from flask import Flask
app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)
然后在一个单独的文件中,在同一目录中 run.py
from app import app
app.run(
debug = True
)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行时run.py,我收到错误
Traceback (most recent call last):
File "run.py", line 1, in <module>
from app import app
ImportError: No module named app
Run Code Online (Sandbox Code Playgroud) 我有一个名为的模块extended.py,其中包含以下行:
from .basic import BasicModule
Run Code Online (Sandbox Code Playgroud)
并且该文件与此目录basic.py位于同一目录中__init__.py.但是,当我尝试运行它时:
python extended.py
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ValueError: Attempted relative import in non-package
Run Code Online (Sandbox Code Playgroud)
还添加了这一行:
from __future__ import absolute_import
Run Code Online (Sandbox Code Playgroud)
没有解决问题.也许我太累了,看不到明显的 - 但我没有看到这里的问题.
如果你碰巧有
from <module> import *
Run Code Online (Sandbox Code Playgroud)
在程序(或模块)的中间,您将收到警告:
/tmp/foo:100: SyntaxWarning: import * only allowed at module level
Run Code Online (Sandbox Code Playgroud)
我理解为什么import *一般不鼓励(命名空间不可见),但在很多情况下它会证明是方便的,特别是在代码不与任何人共享的情况下.
那么,任何人都可以准确地详细解释为什么from <module> import *在所有可能的情况下都应该禁止?
我无法导入google.cloud.speech
from google.cloud import speech
Run Code Online (Sandbox Code Playgroud)
我用它安装了它:
pip install --upgrade google-cloud-speech -t dir-name
Run Code Online (Sandbox Code Playgroud)
从dir-name导入时,它给出了以下错误
ImportError: No module named google.cloud
Run Code Online (Sandbox Code Playgroud)
包含所有子包的google包在那里,但在每个子包中也没有__init__ .py.
如何在不在包文件夹中添加__init__ .py的情况下导入此包?
PS:我也尝试过__future__ import absolute_import,但它无法正常工作.
python-import python-2.7 google-speech-api google-cloud-speech
我知道有很多相似或相同的问题,但我仍然无法理解/找到适合我使用模块的正确方法.Python是我最喜欢的语言,我喜欢其中的一切,除了使用导入:递归导入(当你尝试引用一个尚未存在的名称时),导入路径等.
所以,我有这种项目结构:
my_project/
package1/
__init__.py
module1
module2
package2/
__init__.py
module1
module2
Run Code Online (Sandbox Code Playgroud)
Package1可以使用独立单元,但也可以通过它导入package2.我现在在做什么,例如,在package1.module1我写from package1 import module2,即使用导入模块的完整路径.我这样做是因为如果我使用import module2- 当从另一个包(package2)导入模块时,这将不起作用.我也无法使用from . import module2- module1直接运行时这不起作用.
好的,所以为了from package1 import module2在package1.module1两种情况下工作(当直接运行package1.module1和从中导入时package2)我在以下的开头添加这些行package1.module1:
import os, sys
currDir = os.path.dirname(os.path.realpath(__file__))
rootDir = os.path.abspath(os.path.join(currDir, '..'))
if rootDir not in sys.path: # add parent dir to paths
sys.path.append(rootDir)
Run Code Online (Sandbox Code Playgroud)
对我来说,这是有效的,但我觉得这不是pythonic.难道我做错了什么?
相反,我应该始终package1.module1从项目根运行吗?如果是这样,这使得从IDE运行它变得不方便 - 我需要以某种方式在其中设置路径.
更新:我试图添加一个文件root.pth到 …
我的Python 3.3项目中有一个名为/ models的目录.
从我,main.py我只是做一个
from models import *
Run Code Online (Sandbox Code Playgroud)
在我的__init__.py:
__all__ = ["Engine","EngineModule","Finding","Mapping","Rule","RuleSet"]
from models.engine import Engine,EngineModule
from models.finding import Finding
from models.mapping import Mapping
from models.rule import Rule
from models.ruleset import RuleSet
Run Code Online (Sandbox Code Playgroud)
这适用于我的应用程序.
我有一个模型依赖于其他模型,使得我engine.py我需要进口finding.py的engine.py.当我做:from finding import Finding
我收到了错误No Such Module exists.
如何从同一模块/目录中的文件A导入B类?
编辑1:
显然我可以做到:from .finding import Finding这是有效的.下面的答案也反映了这一点,所以我认为这是合理的正确.我已经修复了我的文件命名并将测试移到了另一个目录,现在我运行得很顺利.谢谢!
from __future__ import absolute_import在每个模块中启用目录树看起来像:
Project/
prjt/
__init__.py
pkg1/
__init__.py
module1.py
tests/
__init__.py
test_module1.py
pkg2/
__init__.py
module2.py
tests/
__init__.py
test_module2.py
pkg3/
__init__.py
module3.py
tests/
__init__.py
test_module3.py
data/
log/
Run Code Online (Sandbox Code Playgroud)
我试图用功能compute()的pkg2/module2.py在pkg1/module1.py写,如:
# In module1.py
import sys
sys.path.append('/path/to/Project/prjt')
from prjt.pkg2.module2 import compute
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时python module1.py,解释器引发了一个ImportError No module named prjt.pkg2.module2.
Project到sys.path?test_module1.py在交互式翻译中运行?通过python prjt/pkg1/tests/test_module1.py或python -m prjt/pkg1/tests/test_module1.py?在Cython文档的教程中,有numpy模块的cimport和import语句:
import numpy as np
cimport numpy as np
Run Code Online (Sandbox Code Playgroud)
我发现这个约定在numpy/cython用户中很受欢迎.
这看起来很奇怪的我,因为他们都命名为NP.在哪部分代码中,使用了导入/ cimported np?为什么cython编译器不会混淆它们?
是否可以使用__init__.pyx(编译__init__.so)创建Python 2.7包?如果是这样的话?我没有运气好运.
这是我尝试过的:
setup.py:
#!/usr/bin/env python
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
foo = Extension(name='foo.__init__', sources=['foo/__init__.pyx'])
bar = Extension(name='foo.bar', sources=['foo/bar.pyx'])
setup(name='foo',
packages = ['foo'],
cmdclass={'build_ext':build_ext},
ext_modules = [foo, bar])
Run Code Online (Sandbox Code Playgroud)foo/__init__.pyx:
import foo.bar
cpdef hello_world():
print "hello world"
foo.bar.blah()
Run Code Online (Sandbox Code Playgroud)foo/bar.pyx:
cpdef blah():
print "blah"
Run Code Online (Sandbox Code Playgroud)以上具有以下行为:
$ python -c 'import foo; foo.hello_world()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named foo
Run Code Online (Sandbox Code Playgroud)
我看到 …
python-import ×10
python ×9
python-2.7 ×4
cython ×2
importerror ×1
module ×1
namespaces ×1
numpy ×1
opencv ×1
path ×1
python-3.x ×1