0

我该如何正确地写这样的东西:

from ../lib.model import mymodel

这是树:

lib----->model---->mynodel.py
 |
 |----->myscript--->myscript.py
4

3 回答 3

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
于 2013-09-19T00:48:25.313 回答
1

如果您的脚本正在使用lib,您可以使用为您的项目创建一个setup.py使用文件setuptools

使用 setuptoolsdevelop命令将创建项目的“开发模式”版本并将其放在 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

于 2013-09-19T01:03:11.463 回答
0

假设您从myscript.py.

尝试这个:

import sys
sys.path.insert(0, '../model/')
import mynodel

mynodel可能是mymodel,我认为您在帖子中打错了字。

切勿将扩展名放在 imprt 语句中。

sys.path是 python 将在其中查找库文件的路径列表。您可以简单地将相对路径添加到您想要的目录。通过将它放在列表的前面,您可以确保 python 将首先在指定路径查找文件(例如,有一个同名的库,您的文件将具有优先权)。

tree此外,提供(linux 和cmd(Windows)命令)的输出可能很有用。这给出了标准化的输出。

于 2013-09-19T00:39:32.970 回答