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

标签 python c++ xcode sh

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

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 时,出现“ImportError: No module named tick.base”错误。 但是 tick 文件夹实际上存在于“my_computer/anaconda3/lib/python3.6/site-packages”中,直到上周我还在使用来自 anaconda navigator 的 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

最佳答案

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

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

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

如果您使用的是像 cent os 这样的操作系统,破坏默认的 python 路径可能会破坏您的 yum,因此在更改它之前要小心。

关于python - 通过 sh 导入模块错误运行 .py 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51172944/

相关文章:

python - XPath 返回空列表。为什么它忽略目标 div 元素?

python - 更新 Azure 服务计划后 Flask 应用程序失败

c++ - -D 选项从 g++ 命令行被错误地扩展

ios - 如何在没有 Mac Developer 程序成员(member)资格的情况下使用 NSLogger Desktop Client

Python MySQL 参数化日期查询

python - 如何迭代创建嵌套字典?

c++ - 为什么两次删除指针会导致崩溃?

c++ - 如何从 C 的 "getcwd"函数返回一个 std::string

iOS 应用程序在没有链接必要框架的情况下工作

objective-c - Xcode有智能感知吗