脚本在 ipython 中运行,但不能从命令行运行
Script working in ipython but not from the command line
我有一个在 ipython 中运行的脚本,但是当我尝试 运行 来自命令行的相同脚本时,我收到了我尝试导入的本地模块的导入错误:
from helper_functions.email_from_server import send_email
错误:
导入错误:没有名为 helper_functions.email_from_server
的模块
此脚本从 Ipython 中导入,没有任何问题。
相比之下,我的代码 运行 在 ipython 中没有任何问题我可以 运行 使用命令的另一个脚本:
运行script.py
从命令行我可以运行相同的脚本:
python /dir/script.py
但是这个 python /dir/script.py 不适用于本地导入的脚本(从上面),我无法确定它是否是 python 路径问题还是一些本地环境问题?我一直在阅读堆栈以找到它,但到目前为止还没有找到。感觉指日可待
一个尝试的解决方案:
PYTHONPATH=/dir/ python /dir/script.py
编辑(帮助澄清):
我在 linux 机器上使用 anaconda 发行版。
与 PYTHONPATH
混在一起会导致悲伤。您可以 这样做,但您不应该这样做。正确的做法是在正确的环境中安装您的包。如果您不知道如何创建包 here's a super simple example。 运行通过 ipython 与命令行进行 运行 时,您的路径可能会有所不同。
您可以使用 sys.executable
和 sys.path
找出不同之处:
import sys
print(sys.executable)
print(sys.path)
运行 来自 IPython,然后 运行 来自命令行上的 python
。你无疑会得到两个不同的结果。由于您使用的是 运行ning Anaconda,因此您希望 follow their guide 安装非 conda 软件包以安装您构建的软件包。
虽然当然假设您已经在您的路径上找到了蟒蛇 python - 您可以使用 which python
进行检查,因为您在 Linux.
我通过创建包装器 shell 脚本解决了这个问题。丑陋的是我每次都导出 python 路径,但它有效。
#!/bin/bash
export PYTHONPATH="${PYTHONPATH}:/my/dir"
source ~/.bash_profile
cd /my/dir && my/anaconda/location/bin/python /my/dir/to/script/cript.py
我有一个在 ipython 中运行的脚本,但是当我尝试 运行 来自命令行的相同脚本时,我收到了我尝试导入的本地模块的导入错误:
from helper_functions.email_from_server import send_email
错误: 导入错误:没有名为 helper_functions.email_from_server
的模块此脚本从 Ipython 中导入,没有任何问题。
相比之下,我的代码 运行 在 ipython 中没有任何问题我可以 运行 使用命令的另一个脚本: 运行script.py
从命令行我可以运行相同的脚本: python /dir/script.py
但是这个 python /dir/script.py 不适用于本地导入的脚本(从上面),我无法确定它是否是 python 路径问题还是一些本地环境问题?我一直在阅读堆栈以找到它,但到目前为止还没有找到。感觉指日可待
一个尝试的解决方案: PYTHONPATH=/dir/ python /dir/script.py
编辑(帮助澄清): 我在 linux 机器上使用 anaconda 发行版。
与 PYTHONPATH
混在一起会导致悲伤。您可以 这样做,但您不应该这样做。正确的做法是在正确的环境中安装您的包。如果您不知道如何创建包 here's a super simple example。 运行通过 ipython 与命令行进行 运行 时,您的路径可能会有所不同。
您可以使用 sys.executable
和 sys.path
找出不同之处:
import sys
print(sys.executable)
print(sys.path)
运行 来自 IPython,然后 运行 来自命令行上的 python
。你无疑会得到两个不同的结果。由于您使用的是 运行ning Anaconda,因此您希望 follow their guide 安装非 conda 软件包以安装您构建的软件包。
虽然当然假设您已经在您的路径上找到了蟒蛇 python - 您可以使用 which python
进行检查,因为您在 Linux.
我通过创建包装器 shell 脚本解决了这个问题。丑陋的是我每次都导出 python 路径,但它有效。
#!/bin/bash
export PYTHONPATH="${PYTHONPATH}:/my/dir"
source ~/.bash_profile
cd /my/dir && my/anaconda/location/bin/python /my/dir/to/script/cript.py