为什么 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 有尾随冒号。