为什么 IPython 在它启动的目录中执行 code.py ?
Why does IPython execute code.py in the directory it's started in?
这是对以下问题的更新,因为我发现当我在包含任何名为 code.py
.
的脚本的目录中启动 bokeh_server
时,也会发生同样的事情
我有一个目录,/Users/xnx/temp/
包含许多(大部分是一次性的)文件,包括各种脚本。当我从我的 Anaconda py33
虚拟环境中的命令启动 IPython 时,在将我放入 IPython shell 之前,它似乎 运行 这些脚本之一,因为在 IPython 显示其提示之前,我得到了一个数字列表及其立方体输出到屏幕:
Xnx-Mac:temp xnx$ py33
discarding /Users/xnx/anaconda/bin from PATH
prepending /Users/xnx/anaconda/envs/py33/bin to PATH
(py33)Xnx-Mac:temp xnx$ ipython
0
0
1
1
2
8
...
99
970299
Python 3.3.5 |Anaconda 2.0.1 (x86_64)| (default, Sep 2 2014, 13:57:31)
Type "copyright", "credits" or "license" for more information.
IPython 2.3.0 -- An enhanced Interactive Python.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]:
(py33
只是 source activate py33
的 bash 别名)。
这似乎没有造成任何伤害,但我想知道为什么会这样。有什么想法吗?
编辑:好的:有问题的脚本是我的 /Users/xnx/temp/
目录中名为 code.py
的文件。为什么 IPython 在启动它的 shell 之前执行这个文件?如果它包含从我的系统中删除文件的命令怎么办?其他人可以重现吗? Python 2.
似乎没有发生
好吧,通过 chat.whosebug.com 中的一点(很多)help,我找到了问题所在:
我的 ~/.bash_profile
文件包含行
export PYTHONPATH="/Users/xnx/research/python_modules:$PYTHONPATH"
将环境变量 PYTHONPATH
设置为 /Users/xnx/research/python_modules:
,因为之前未定义 $PYTHONPATH
。尾随的冒号导致 ''
被添加到 sys.path
,并且当前工作目录在 IPython import
中的正确文件之前搜索文件 code.py
在启动时。
经验教训:不要让 $PYTHONPATH
有尾随冒号。
这是对以下问题的更新,因为我发现当我在包含任何名为 code.py
.
bokeh_server
时,也会发生同样的事情
我有一个目录,/Users/xnx/temp/
包含许多(大部分是一次性的)文件,包括各种脚本。当我从我的 Anaconda py33
虚拟环境中的命令启动 IPython 时,在将我放入 IPython shell 之前,它似乎 运行 这些脚本之一,因为在 IPython 显示其提示之前,我得到了一个数字列表及其立方体输出到屏幕:
Xnx-Mac:temp xnx$ py33
discarding /Users/xnx/anaconda/bin from PATH
prepending /Users/xnx/anaconda/envs/py33/bin to PATH
(py33)Xnx-Mac:temp xnx$ ipython
0
0
1
1
2
8
...
99
970299
Python 3.3.5 |Anaconda 2.0.1 (x86_64)| (default, Sep 2 2014, 13:57:31)
Type "copyright", "credits" or "license" for more information.
IPython 2.3.0 -- An enhanced Interactive Python.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]:
(py33
只是 source activate py33
的 bash 别名)。
这似乎没有造成任何伤害,但我想知道为什么会这样。有什么想法吗?
编辑:好的:有问题的脚本是我的 /Users/xnx/temp/
目录中名为 code.py
的文件。为什么 IPython 在启动它的 shell 之前执行这个文件?如果它包含从我的系统中删除文件的命令怎么办?其他人可以重现吗? Python 2.
好吧,通过 chat.whosebug.com 中的一点(很多)help,我找到了问题所在:
我的 ~/.bash_profile
文件包含行
export PYTHONPATH="/Users/xnx/research/python_modules:$PYTHONPATH"
将环境变量 PYTHONPATH
设置为 /Users/xnx/research/python_modules:
,因为之前未定义 $PYTHONPATH
。尾随的冒号导致 ''
被添加到 sys.path
,并且当前工作目录在 IPython import
中的正确文件之前搜索文件 code.py
在启动时。
经验教训:不要让 $PYTHONPATH
有尾随冒号。