Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x ImportError:Debian操作系统中没有名为numpy的模块_Python 3.x_Numpy - Fatal编程技术网

Python 3.x ImportError:Debian操作系统中没有名为numpy的模块

Python 3.x ImportError:Debian操作系统中没有名为numpy的模块,python-3.x,numpy,Python 3.x,Numpy,在我的debian机器上的虚拟环境中,我可以在提示符下导入numpy,但当我在程序中调用它时,它会出错 我正在网上查看,他们说要卸载并重新安装。我试过了,但是没有。 另外,我可以在python提示符中导入它,但在调用脚本时不能导入?请帮我解决这个问题 我能够在提示下成功呼叫:- (venv) root@c3-redsuren-vm01:~/my-project# python Python 3.8.2 (default, Apr 13 2020, 08:44:45) [GCC 8

在我的debian机器上的虚拟环境中,我可以在提示符下导入numpy,但当我在程序中调用它时,它会出错

我正在网上查看,他们说要卸载并重新安装。我试过了,但是没有。 另外,我可以在python提示符中导入它,但在调用脚本时不能导入?请帮我解决这个问题

我能够在提示下成功呼叫:-

(venv) root@c3-redsuren-vm01:~/my-project# python
    Python 3.8.2 (default, Apr 13 2020, 08:44:45)
    [GCC 8.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import paramiko
    >>> import numpy
    >>> exit()
在这里,当我尝试执行我的程序时,它会出错:-

(venv) root@c3-redsuren-vm01:~/my-project# ./test_nump.py
Traceback (most recent call last):
  File "./test_nump.py", line 2, in <module>
    import numpy
ImportError: No module named numpy
(venv) root@c3-redsuren-vm01:~/my-project# cat test_nump.py
#!/usr/bin/python
import numpy
print("test")
(venv) root@c3-redsuren-vm01:~/my-project#
(venv)root@c3-redsuren-vm01:~/my project#/test_nump.py
回溯(最近一次呼叫最后一次):
文件“/test\u nump.py”,第2行,在
进口numpy
ImportError:没有名为numpy的模块
(venv)root@c3-redsuren-vm01:~/my project#cat test_nump.py
#!/usr/bin/python
进口numpy
打印(“测试”)
(venv)root@c3-redsuren-vm01:~/my project#

根据OP的要求

对于任何可执行文件,bash用
shebang
#
提取脚本的解释器。如果找不到shebang,它将尝试使用服务文件类型,然后使用相关的加载方法。这就是运行ELF二进制文件不需要指定执行器的原因

现在,虚拟环境通过覆盖bash搜索路径来工作,也就是说,当您键入命令时,它应该在哪里查找。例如,如果您有一个二进制名称
ls
,它应该在哪里找到要从中加载的名称。它引用您的搜索路径或
$path
变量,按顺序扫描目录,并在第一次匹配时停止。当您执行
source.venv
操作时,虚拟环境将在它的路径前面添加到
$path
source
命令只是告诉bash会话应用
.venv
文件中的bash指令

在源文件中,您使用
shebang
指令向python的全局安装提供了解释器,而python的模块列表中没有
numpy
,因此它会失败

如果使用
python script.py
运行它,因为
$PATH
被virtual env覆盖,shell将首先找到virtual env的python版本,而不是包含numpy模块的全局版本

为什么
/usr/bin/env-python
可以工作?因为它将引用环境变量(由virtualenv修改)中的
$PATH
,并将找到正确的python安装


您已将python文件中的解释器显式设置为
/usr/bin/python
,该解释器不是虚拟环境的一部分,因此看不到numpy模块。您可以使用
python test\u nump.py
显式调用python,或者在venv python安装的shebang中指定解释器,尽管这不是可移植的,所以只需使用python命令来调用它就可以了。非常感谢@pikaynu能回答这个问题。我会记下来的。。这对其他人有帮助。舍邦之路到底是什么?(文夫)root@c3-redsuren-vm01:~/my project#echo$PATH/root/my project/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/mssql tools/bin:/root/my projectOk我试过了#/usr/bin/env python成功了!这是怎样的逻辑呢。我有:(文夫)root@c3-redsuren-vm01:~/my project/find_wwn#dir#which python/root/my project/venv/bin/python和$PATH-->/root/my project/venv/bin:/usr/local/sbin:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/opt/mssql tools/bin:/root/my project这是什么解释的。因为在$PATH中没有/usr/bin/“env”python