在匯入檔案的時候,python只搜尋當前指令碼所在的目錄,載入(entry-point)入口指令碼執行目錄和sys.path中包含的路徑例如包的安裝位址。所以如果要在當前指令碼引用其他檔案,除了將檔案放在和指令碼同一目錄下,還有以下幾種方法,
import sys
import file
a).init.py檔案的作用
該檔案的主要作用使初始化python包。如果目錄下面包含了該檔案,python直譯器就會將該目錄當做乙個包,下一步就可以使用import語句在別的.py指令碼中引用該目錄下的檔案。乙個標準python模組的結構如下所示:
package/
__init__.py
file.py
file2.py
subpackage/
__init__.py
submodule1.py
submodule2.py
b).init__檔案可以為空但可以用來建立對包的需求。一般來說會在該檔案中寫那些類,函式等需要被匯入到包水平,從而可以被方便的引用。比如:如果file.py檔案中有乙個file類,在__init.py檔案中啥都沒寫時引用file類需要這樣操作:
from package.file import file
如果在__init__.py檔案中將file匯入包,那就在包水平可以直接引用file類:
# in your __init__.py
from file import file
# in your script
from package import file
此外,還需要注意的一點是__init__.py檔案中的all變數。如果直譯器在__init__.py檔案中觀察到了__all__變數,那麼在執行from package import *
時就只會引入__all__變數中列出的那些模組。例如:如果想在上述結構的只引入submodule1模組,那麼可以在subpackage/__init__.py
檔案中定義__all__ = ['submodule1']
,當引用subpackage時from subpackage import *
就只引入了submodule1模組。
export pythonpath=$home/pathtoyourscripts/:$pythonpath
Python中在指令碼中引用其他檔案函式的方法
在匯入檔案的時候,python只搜尋當前指令碼所在的目錄,載入 entry point 入口指令碼執行目錄和sys.path中包含的路徑例如包的安裝位址。所以如果要在當前指令碼引用其他檔案,除了將檔案放在和指令碼同一目錄下,還有以下幾種方法,import sys import filea init ...
python指令碼環境 在python指令碼中更改環境
我有乙個關於python和linux環境變數的問題。我在這裡讀了很多問題 答案,但沒有乙個是我的。接下來是 在install and create virtualenv easy install prefix opt mypython pip bashrc module unload python ...
shell指令碼中呼叫其他指令碼
目前來說有三種方法 1.指令碼絕對路徑 這個方式是最普通的,底層呼叫的是fork實現,執行的時候開乙個子shell執行呼叫的指令碼,子shell執行的時候,父shell還在 子shell執行完畢後返回父shell,子shell從父shell繼承環境變數,但是子shell中的環境變數不會帶回父shel...