如何向PYTHONPATH添加带冒号的目录?

2024-06-10 09:59:55 发布

您现在位置:Python中文网/ 问答频道 /正文

问题很简单:

使用bash,我想在PYTHONPATH中添加一个目录,以便于脚本执行。不幸的是,我要使用的目录中有一个。所以我尝试以下每一个

export PYTHONPATH=${PYTHONPATH}:/home/shane/mywebsite.com:3344/
export PYTHONPATH=${PYTHONPATH}:/home/shane/mywebsite.com\:3344/
export PYTHONPATH=${PYTHONPATH}:"/home/shane/mywebsite.com:3344/"

这些都不管用。每次在python中,路径都被创建为路径上的两个独立目录。 我的问题是,这有可能是为了巴什吗? 如果是,需要什么语法?


Tags: 路径目录脚本combashhome语法export
3条回答

我不知道您想要的是不是可以直接实现,但是如果您使用linux文件系统,一个解决方法是创建一个指向“coloned”目录的符号链接,并将此符号链接添加到PYTHONPATH,如下所示:

ln -s /home/shane/mywebsite.com\:3344 /home/shane/mywebsite.3344
export PYTHONPATH=${PYTHONPATH}:/home/shane/mywebsite.3344

只有一个你没试过:

export PYTHONPATH=${PYTHONPATH}:"/home/shane/mywebsite.com\:3344/"

问题是没有引号,转义将直接解释,并在字符串中转换为文本“:”。但是“:”需要稍后评估。

$ echo "foo:" 
foo:
$ echo \:foo
:foo
$ echo ":foo"
:foo
$ echo "\:foo"
\:foo

我不能保证这会解决python路径问题,但它会将\literal放入字符串中。

问题不在于巴什。它应该正确设置环境变量,并使用:字符完成设置。

相反,问题在于Python对PYTHONPATH变量的解析。按照^{} variable设置的示例,似乎根本没有转义符,因此无法使它将:解释为除分隔符之外的其他内容。你可以自己在Python interpreter source code中看到它。

唯一的解决方案是,正如一些人已经提到的那样,使用符号链接或其他东西来允许您为目录提供一个无冒号的名称。

相关问题 更多 >