我想问一下是否有办法从与另一个文件夹相邻的项目中的文件夹中导入模块/函数。
例如,假设我有两个文件:
project/src/training.py
project/lib/functions.py
Run Code Online (Sandbox Code Playgroud)
现在这两个文件夹中都有__init__.py
文件。如果我想导入functions.py
到training.py
,它似乎没有检测到。我正在尝试使用from lib.functions import *
.I 知道这在文件夹结构的上层起作用,我可以从脚本调用这两个文件,但是有没有办法在上面/侧面文件夹中执行文件?
如何将我的python文件"myproject.py"的当前路径设置为文件本身?我不想要这样的东西:
path = "the path of myproject.py"
Run Code Online (Sandbox Code Playgroud)
在mathematica我可以设置:
SetDirectory[NotebookDirectory[]]
Run Code Online (Sandbox Code Playgroud)
Mathematica中代码的优点是,如果我更改了Mathematica文件的路径,例如,如果我将其提供给其他人或者将其放在另一个文件夹中,我就不需要做任何额外的事情了.每次Mathematica自动将目录设置为当前文件夹.
我想在Python中使用类似的东西.
我的公司(还)不允许我们安装或升级 python3,也不允许我们在其服务器上安装 pip 模块。即使可以,机器也没有连接到互联网。但我们可以执行 python2 二进制文件
cx_Oracle
无需使用pip
互联网即可使用该模块
我想到在我的计算机上安装 cx_Oracle 包,然后将安装的模块文件从我的计算机复制到服务器。
所以服务器 dev 文件夹看起来像这样(只列出有趣的目录和文件,省略__pychache__
和*.pyc
其他无用的*.py
文件):
|-- test_cx_oracle_in_local.py
\-- sqlalchemy/
|-- connectors
|-- databases
|-- dialects
| |-- firebird
| |-- mysql
| |-- mssql
| |-- oracle
| | |-- base.py
| | |-- cx_oracle.py <--- This is the interesting file
| | |-- __init__.py
| | \-- zxjdbc.py
| |-- postgresql
| |-- sqlite
| |-- sybase
|-- engine
|-- …
Run Code Online (Sandbox Code Playgroud) 相关:从相对路径导入模块
dirA/
A.py
B.py
dirB/
B.py
A.py
import B
# do blah
Run Code Online (Sandbox Code Playgroud)
我想让 A 导入 B。
由于两个目录都有 B.py,我如何指定 A 从 dirB 而不是 dirA 导入 B?
我有一个名为的模块types
,其中包含以下代码
def Hello():
return "Hello World"
Run Code Online (Sandbox Code Playgroud)
但当我这样做时
>>> import types
>>> types.Hello()
Run Code Online (Sandbox Code Playgroud)
它给了我
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Hello'
Run Code Online (Sandbox Code Playgroud)
这真让我吓坏了。