【发布时间】:2021-01-08 03:46:52
【问题描述】:
我的目标是能够通过简单的脚本运行 NumPy。作为新手,简单并不是那么简单。从终端运行 python,NumPy 工作得很好。但是,我无法从脚本中导入它。 numpy 示例从 python 运行,结果如下。
>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
但是,从我的脚本中,runNumPy.py
#!/usr/bin/sh/env python3.6
print("Hello world! from runNumPy.py in python called by Terminal")
import sys, os
print("Current Working Directory: ", os.getcwd())
import numpy as np
我明白了
>>> a = np.arange(15).reshape(3, 5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'np' is not defined
我已经尝试过使用“import numpy as np”和没有“as np”。
我的终端脚本是
#!/bin/sh
echo "Hello, world! Starts helloWorld.sh Terminal script."
source opt/anaconda3/etc/profile.d/conda.sh
conda activate bioETE
cd opt; cd anaconda3; cd envs; cd bioETE; cd lib; cd python3.6; cd site-packages
python ./runNumPyS.py #This runs runNumPyS.py from the terminal
python ./runNumPy.py #This runs the runNumPy.py from the terminal
python
它的输出是
Hello, world! Starts helloWorld.sh Terminal script.
Hello world: from helloWorld.py in python script called by Terminal
Hello world! from runNumPy.py in python called by Terminal
Current Working Directory: home/opt/anaconda3/envs/bioETE/lib/python3.6/site-packages
Python 3.6.12 |Anaconda, Inc.| (default, Sep 8 2020, 17:50:39)
[GCC Clang 10.0.0 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
如前所述,我的目标是在 python 提示符下启动 NumPy >>> 而不使用另一个 import 语句。这个 shell 脚本工作正常。它调用python脚本。
在上面的输出中,第一个“Hello World”是在我继续之前显示 shell 脚本正在运行。另外两个,“Hello World”,用于查看是否调用了 python 脚本。
您可以通过 python 脚本输出看到 python 打印命令和 sys 和 os 导入调用工作正常。系统调用似乎告诉我我在正确的目录中..??
runNumPy.py 脚本是
#!/usr/bin/sh/env python3.6
print("Hello world! from runNumPy.py in python called by Terminal")
import sys, os
print("Current Working Directory: ", os.getcwd())
import numpy as np
在 python 提示符下,我收到以下错误。
>>> a = np.arange(15).reshape(3, 5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'np' is not defined
显然,numpy 没有被导入。同样,在同样的提示下,如果我先输入“import numpy as np”,NumPy 就可以正常工作。
NumPy的模块numpy位于
home/opt/anaconda3/envs/bioETE/lib/python3.6/site-packages/numpy
我尝试在两个地方放置 python 脚本 runNumPy.py。
1)home/opt/anaconda3/envs/bioETE/lib/python3.6/site-packages
2)home/opt/anaconda3/envs/bioETE/lib/python3.6/
这两个地方似乎都不起作用。我暂时被困住了。任何和所有有用的建议或一两个解决方案将不胜感激。
【问题讨论】:
-
您正在使用 MacOS Python 运行 runNumPy.py,但您没有为该版本安装 NumPy。删除第一行中的#!/usr/bin/sh/env python3.6,执行
conda activate bioETE,然后执行conda install numpy,然后使用python runNumPy.py运行您的脚本。此外,将 runNumPy.py 放在站点包中听起来不是一个好主意... -
感谢您的反馈。我听从了你的建议,我的问题仍然存在。但是,我确实有一个带有评论的更新 conda:# All requested packages already installed。所以当然我从中删除了安装 conda。
-
通常检查你使用的 Python 的最简单方法是在终端中写入
which python(适用于任何命令)。你应该得到/home/opt/anaconda3/envs/bioETE/bin/python/。 -
谢谢。是的,我只是确认正确的是响应来自 conda 环境的脚本。我想我的简短问题是:python 脚本能否将变量、函数和类返回给 python CLI “记住”它们以交互方式使用而无需重新输入它们。就我而言,除了打印命令,脚本中发生的事情都保留在脚本中。
-
谢谢,我可能会研究 iPython。到目前为止,我相信我的问题已经解决了。请注意下面 vy32 的建议。
标签: python macos numpy terminal