首页 > 解决方案 > 为什么 Shebang 行中的 Anaconda python 找不到脚本(cygwin)?

问题描述

我在 Windows 10 上使用 cygwin,并想编写 Python 代码,使用我的 Anaconda 基础环境中包含的 Pandas 和其他包。如果我给出代码的绝对路径,我可以运行 Python 代码,但如果 bash 需要使用 PATH 来查找代码,则不能。

我按照这里的建议在我的 .bash_profile 中使用这些行 (搜索“bash_profile”):

. /opt/conda/etc/profile.d/conda.sh
conda activate base

这是我的 PATH 的开始,在前面显示 Anaconda 的东西:

$ echo ${PATH:1:160}
cygdrive/c/Users/Glenn/Anaconda3:/cygdrive/c/Users/Glenn/Anaconda3/Library/mingw-w64/bin:/cygdrive/c/Users/Glenn/Anaconda3/Library/usr/bin:/cygdrive/c/Users/Gle...

我可以在 bash 提示符下运行 Anaconda Python:

$ which python
/cygdrive/c/Users/Glenn/Anaconda3/python
$ python -i
Python 3.7.3 (default, Apr 24 2019, 15:29:51) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32

Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated.  Libraries may fail to load.  To activate this environment
please see https://conda.io/activation

Type "help", "copyright", "credits" or "license" for more information.
>>>

我什至可以运行一个使用 Pandas 的 Python 程序:

$ pwd
/home/Glenn/bin
$ cat test.py
#!/usr/bin/env python
import pandas as pd
print(pd.Series([1,2]))
$ ./test.py
0    1
1    2
dtype: int64

问题是如果我依赖路径,我将无法运行程序:

$ which test.py
/home/Glenn/bin/test.py
$ test.py
C:\Users\Glenn\Anaconda3\python.exe: can't open file '/home/Glenn/bin/test.py': [Errno 2] No such file or directory
$

如果我使用绝对路径名从另一个目录调用 test.py,我会收到相同类型的错误消息,但如果我使用相对路径名调用它则不会。

我是 Cygwin 的长期用户,以前从未见过这种行为,所以怀疑它与 Anaconda 有关。我可以更改到任何其他目录并获得相同的行为。此外,如果我将 Anaconda 的 Python 的绝对路径放在 shebang 行中,我会得到相同的行为。

我已经找到(并尝试过)许多在 Cygwin 环境中配置 Anaconda 的建议,但其中很多都是 4 或 5 岁。

更新:我无法解决此问题,但已切换到 Linux Windows 子系统,不再需要处理此问题。

标签: pythonwindowsanacondacygwin

解决方案


推荐阅读