Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 脚本无法导入已安装的包,但解释器可以_Python_Python 3.x_Python Import - Fatal编程技术网

Python 脚本无法导入已安装的包,但解释器可以

Python 脚本无法导入已安装的包,但解释器可以,python,python-3.x,python-import,Python,Python 3.x,Python Import,使用Windows 10、Python 3.4.3、Powershell和干净的venv: PS C:\Users\nward\MyEnvDirectory .\Scripts\Activate.ps1 (MyScriptVenv) PS C:\Users\nward\MyEnvDirectory pip install Package [...] Success! 我可以验证C:\Users\nward\MyEnvDirectory\Lib\site packages\Package是否存在

使用Windows 10、Python 3.4.3、Powershell和干净的venv:

PS C:\Users\nward\MyEnvDirectory .\Scripts\Activate.ps1
(MyScriptVenv) PS C:\Users\nward\MyEnvDirectory pip install Package
[...] Success!
我可以验证
C:\Users\nward\MyEnvDirectory\Lib\site packages\Package
是否存在,并且外观是否良好

(MyScriptVenv) PS C:\Users\nward\MyEnvDirectory python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Package
>>>
所以,这是可行的。但是,如果我尝试从同一目录中的.py文件中运行同一行,例如“import Package”,如下所示-
(MyScriptEnv)PS C:\Users\nward\MyEnvDirectory.\main.py
-然后我得到一个
导入错误:没有名为“Package”的模块

根据我所读到的,这通常是由于路径错误、阴影或混合版本的Python造成的
python--version
提供了
python3.4.3
,我相信我没有安装任何其他版本。我不认为这是由于阴影,因为我的脚本文件和包有不同的名称。所以这一定是因为路径问题,但我不明白它是什么,因为解释器显然没有路径问题!这个问题似乎正是我的问题,但它是由于阴影/目录结构问题。我还了解到这可能是一个权限问题(例如一个提升的解释器,但是一个低权限的执行shell),但是在这种情况下权限是可以的


有人对我下一步应该去哪里有什么建议吗?这是一个非常基本的问题,我肯定我只是误解了一些东西,但我有点困惑。谢谢

看起来就像在虚拟环境中使用-

PS C:\Users\nward\MyEnvDirectory python
您正在从virtualenv获得python安装,但是当您以-

.\main.py
python main.py
它在virtualenv之外拾取python,因为当您直接运行该文件时,windows拾取为
.py
文件注册的python可执行文件。您可以尝试按以下方式运行脚本:-

.\main.py
python main.py

从virtualenv内部。

导入系统时会得到什么;在加载失败的脚本中打印(sys.path)。您可能需要在
PYTHONPATH
中添加“包”的位置。我不确定你是如何在Windows中做到这一点的,但要找到它应该不会太难。希望这会有所帮助。环境变量会在运行Python的不同位置产生不同的路径,因此可能存在差异<代码>按Anand的建议打印系统路径,然后查看结果。解释器和脚本之间的结果确实不同。为什么会这样?我如何才能使脚本的执行环境与解释器相同?我本以为在激活的VENV中运行它会成功。。。