通过sh导入模块错误运行.py脚本

时间:2018-07-04 11:47:38

标签: python c++ xcode sh

这是一个非常基本的问题,涉及如何用python编写代码以及如何从一开始就运行脚本。 我正在使用Xcode9.4.1编写脚本,该脚本应该用于python3.6。然后,我在脚本的同一文件夹(例如“ my_folder”)中有一个sh脚本run.sh,看起来就像

python my_script.py

python脚本看起来像

from tick.base import TimeFunction
import numpy as np
import matplotlib.pyplot as plt

v = np.arange(0., 10., 1.)
f_v = v + 1
u = TimeFunction((v, f_v))
plt.plot(v, u.value(v))
print('donne!\n')

但是当我尝试从终端运行my_script.sh时,出现“导入错误:没有名为tick.base的模块”错误。 但是tick文件夹实际上存在于“ my_computer / anaconda3 / lib / python3.6 / site-packages”中,直到上周我一直在使用anaconda导航器中的Spyder,并且一切正常,因此没有发生“导入错误”。

这个问题相当琐碎,从某种意义上说,它只是“编写和运行python脚本的典型过程是什么,在给定的计算机上运行时,应该如何导入下载模块?”

我需要它,因为我的脚本要通过ssh在另一台计算机上运行,​​并使用我的笔记本电脑进行一些尝试。到去年为止,我以前使用C语言工作,只需要移动一些包含代码和.h文件的文件夹。

感谢帮助!

编辑1: 在脚本没有问题的Spyder 3.2.7设置中,我打印了

import sys
print(sys.path)

手动将内容复制到my_script.py中的sys.path变量,然后重新运行“ run.sh”,现在出现新的(奇怪的)错误:

Traceback (most recent call last):
[...]
 File "/Users/my_computer/anaconda3/lib/python3.6/site-packages/tick/array/build/array.py", line 106
def tick_double_array_to_file(_file: 'std::string', array: 'ArrayDouble const &') -> "void":
                                   ^
SyntaxError: invalid syntax

2 个答案:

答案 0 :(得分:1)

首先,检查调用脚本的python指向anaconda python,它与您期望的版本相同。您可以在Linux和Mac中执行“哪个python”命令,该路径指向python。如果它指向的Python版本或构建版本与您期望的版本不同,则将所需的路径添加到系统环境PATH变量中。在Linux和Mac中,可以通过在/ home /文件夹的.bashrc文件中添加以下行来完成此操作:

export PATH=/your/python/path:$PATH

然后获取.bashrc文件。     源.bashrc

如果您使用的是cent os之类的操作系统,则破坏默认的python路径可能会破坏您的yum,因此在进行更改之前请务必小心。

答案 1 :(得分:0)

我正在PyCharm中运行脚本,在Project Interpretor下,我有路径 C:\ envs \ conda \ keras2 \ python.exe

当我尝试通过ssh在服务器上运行脚本时,出现“未命名模块”错误。我懂了 / usr / bin / python作为服务器本身“哪个python”的回答。您能否告诉我必须添加哪个路径才能使脚本正常运行?