我如何正确地写这样的东西:
from ../lib.model import mymodel
这是树:
lib----->model---->mynodel.py
|
|----->myscript--->myscript.py
答案 0 :(得分:1)
如果lib
是一个软件包,请将myscript
作为模块运行并导入mymodel
,如下所示:
from ..model import mymodel # relative import
或者:
from lib.model import mymodel # absolute import
要在myscript.py
包中运行lib
作为模块,请执行以下操作之一:
lib
lib.myscript.myscript
的文件夹中运行程序
myscript.py
lib
的文件夹中将python -m lib.myscript.myscript
作为模块运行
答案 1 :(得分:1)
如果您的脚本使用lib
,则可以使用setup.py
setuptools
使用文件
使用setuptools develop
命令将创建项目的“开发模式”版本并将其放在python路径上。然后就像使用任何python包一样容易使用它。
你的setup.py可以简单如下:
from setuptools import setup, find_packages
setup(
name = "lib",
version = "0.1dev",
packages = find_packages(),
)
然后你可以开发你的项目,如
python setup.py develop
现在您可以将包导入任何您想要的脚本
from lib.model import model
答案 2 :(得分:0)
假设您从myscript.py
致电。
试试这个:
import sys
sys.path.insert(0, '../model/')
import mynodel
mynodel
可能是mymodel
,我认为你在帖子中写了一个错字。
永远不要将扩展名放在imprt语句中。
sys.path
是python将查找库文件的路径列表。您只需添加所需目录的相对路径即可。通过将它放在列表的前面,您可以确保python将首先在指定的路径中查找文件(例如,有一个具有相同名称的库,您的文件将具有优先级)。
此外,给出tree
(linux和cmd
(Windows)命令的输出可能很有用。这给出了标准化的输出。