n0p*_*0pe 121 python import module package
我很难理解模块导入如何在Python中工作(我以前从未用任何其他语言完成它).
比方说我有:
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
Run Code Online (Sandbox Code Playgroud)
现在我想尝试这样的事情:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
Run Code Online (Sandbox Code Playgroud)
但是,我肯定做错了,因为Python无法看到这myapp
是一个模块:
ImportError: No module named myapp
Run Code Online (Sandbox Code Playgroud)
Dav*_*son 80
在您的特定情况下,您似乎尝试SomeObject
从myapp.py和TestCase.py脚本导入.从myapp.py,做
import SomeObject
Run Code Online (Sandbox Code Playgroud)
因为它在同一个文件夹中.对于TestCase.py,请执行
from ..myapp import SomeObject
Run Code Online (Sandbox Code Playgroud)
但是,只有从包中导入TestCase时才会起作用.如果你想直接跑python TestCase.py
,你将不得不弄乱你的道路.这可以在Python中完成:
import sys
sys.path.append("..")
from myapp import SomeObject
Run Code Online (Sandbox Code Playgroud)
虽然通常不建议这样做.
通常,如果您希望其他人使用您的Python包,您应该使用distutils来创建安装脚本.这样,任何人都可以使用类似的命令轻松安装您的软件包python setup.py install
,它将在他们的机器上随处可用.如果你认真对待这个包,你甚至可以将它添加到Python包索引PyPI中.
Zen*_*non 35
该函数import
在PYTHONPATH环境中查找文件.变量和您的本地目录.因此,您可以将所有文件放在同一目录中,也可以将路径输入到终端::
export PYTHONPATH="$PYTHONPATH:/path_to_myapp/myapp/myapp/"
Run Code Online (Sandbox Code Playgroud)
jmo*_*oss 10
导出路径是一个好方法.另一种方法是将.pth添加到您的站点包位置.在我的mac上,我的python将site-packages保存在/ Library/Python中,如下所示
/Library/Python/2.7/site-packages
Run Code Online (Sandbox Code Playgroud)
我在/Library/Python/2.7/site-packages/awesome.pth创建了一个名为awesome.pth的文件,并在文件中放入了引用我的真棒模块的以下路径
/opt/awesome/custom_python_modules
Run Code Online (Sandbox Code Playgroud)
小智 10
你需要有
__init__.py
Run Code Online (Sandbox Code Playgroud)
在所有包含您需要交互的代码的文件夹中。即使您尝试导入的文件位于同一级别,您还需要在每次导入时指定项目的顶级文件夹名称。
小智 7
你可以试试
from myapp.myapp import SomeObject
Run Code Online (Sandbox Code Playgroud)
因为您的项目名称与myapp.py相同,因此它会首先搜索项目文档
在你的第一个myapp目录中,你可以添加一个setup.py文件并在setup.py中添加两个python代码
from setuptools import setup
setup(name='myapp')
Run Code Online (Sandbox Code Playgroud)
在命令行中的第一个 myapp 目录中,使用 pip install -e 。安装软件包
归档时间: |
|
查看次数: |
245915 次 |
最近记录: |