簡體   English   中英

將目錄添加到sys.path / PYTHONPATH

[英]adding directory to sys.path /PYTHONPATH

我正在嘗試從特定目錄導入模塊。

問題是如果我使用sys.path.append(mod_directory)追加路徑然后打開python解釋器,目錄mod_directory將被添加到列表sys.path的末尾。 如果在打開python解釋器之前導出PYTHONPATH變量,則該目錄將添加到列表的開頭。 在后一種情況下,我可以導入模塊,但在前者,我不能。

有人可以解釋為什么發生這種情況,給我一個解決添加mod_directory的開始,一個python腳本里面

這是有記錄的。 PYTHONPATH中指定的任何路徑都記錄為通常位於工作目錄之后但在標准解釋程序提供的路徑之前。 sys.path.append()追加到現有路徑。 看到這里這里 如果您希望首先使用特定目錄,只需將其插入sys.path的頭部:

import sys
sys.path.insert(0,'/path/to/mod_directory')

也就是說,管理導入通常比使用PYTHONPATH或直接操作sys.path更好。 例如,請參閱此問題的答案。

你可以使用:

import os
path = 'the path you want'
os.environ['PATH'] += ':'+path

至於我,我需要caffe到我的python路徑。 我可以通過add添加它的文件/home/xy/.bashrc的路徑

export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH

到我的/home/xy/.bashrc文件。

但是當我使用pycharm時,路徑仍未進入。

所以我可以通過run - > edit Configuration添加PYTHONPATH變量的路徑。

在此輸入圖像描述

暫時改變目錄適用於導入:

cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)

在Windows下從Powershell運行Python腳本時,這應該有效:

$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"

# Now run the actual script
python your_script.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM