如何在Python中导入其他文件?
import file.py?例如,main.py我有:
from extra import *
Run Code Online (Sandbox Code Playgroud)
虽然这给了我所有的定义extra.py,但也许我想要的只是一个定义:
def gap():
print
print
Run Code Online (Sandbox Code Playgroud)
我怎么添加到import语句只得到gap从extra.py?
我正在尝试将目录添加到PATH机智代码中,如下所示:
PROJECT_DIR = Path(__file__).parents[2]
sys.path.append(
PROJECT_DIR / 'apps'
)
Run Code Online (Sandbox Code Playgroud)
它不起作用.如果我打印,sys.path我看到这样的事情:
[..., PosixPath('/opt/project/apps')]
Run Code Online (Sandbox Code Playgroud)
我该如何修复此代码?写作是正常的str(PROJECT_DIR / 'apps')吗?
我正在尝试在我的本地机器上运行。我收到错误 ImportError: No module named 'sklearn' only in jupyter notebook 当我从命令行使用 python 并激活和停用 carnd-term1 env 时,它工作正常。
我已经使用 pip、apt-get 和 conda 安装了 sklearn。还尝试了 conda upgrade scikit-learn。env 处于活动状态和停用状态。
(carnd-term1) matt@Malta:~/sdc$ conda upgrade scikit-learn
Fetching package metadata .........
Solving package specifications: .
# All requested packages already installed.
# packages in environment at /home/matt/anaconda3/envs/carnd-term1:
#
scikit-learn 0.18.1 np112py35_1
Run Code Online (Sandbox Code Playgroud)
(carnd-term1) matt@Malta:~/sdc$ python3
Python 3.5.2 | packaged by conda-forge | (default, Jan 19 2017, 15:28:33)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", …Run Code Online (Sandbox Code Playgroud) 我正在尝试解决一个与在我编写的 Python 脚本中导入模块相关的奇怪问题。实现该模块的文件与主 Python 脚本位于同一目录中。
当我使用 ActivePython 时,Python 脚本运行良好。但是,当我使用嵌入式分发时,出现以下错误。
ModuleNotFoundError: No module named 'pyWhich'
Run Code Online (Sandbox Code Playgroud)
我已经将行为的差异追溯到 sys.path veritable 在 Embedded Distribution 中的设置方式。
在 ActivePython(我的脚本运行的环境)中,sys.path 中的第一个条目是包含脚本的目录。在嵌入式分发中,没有包含脚本的目录条目。
Embedded Distribution 使用 _pth 文件来设置 sys.path。我正在使用默认的 ._pth 文件,为了您的方便,我将其包含在下面。
python36.zip
.
# Uncomment to run site.main() automatically
#import site
Run Code Online (Sandbox Code Playgroud)
我的问题是,我需要在我的 _pth 文件中添加什么神奇的咒语来告诉 Python请将包含我在 sys.path 中运行的任何脚本的目录放入这样我的脚本将与嵌入式分发一起使用。路径配置文件的文档似乎不包含此信息。
我正在尝试在Jupyter笔记本上导入cv2,但是我收到了这个错误:
ImportError: No module named cv2
Run Code Online (Sandbox Code Playgroud)
我很沮丧,因为我现在正在处理这个简单的问题几个小时.它适用于Pycharm但不适用于Jupiter笔记本.我已经将cv2安装到Python2.7的站点包中,将Jupyter的内核配置为python2,浏览文档但我仍然没有得到我所缺少的内容?
(我正在使用Windows 10并使用microsoft cognitives api,这就是我需要导入此包的原因.)
这是代码:
<ipython-input-1-9dee6ed62d2d> in <module>()
----> 1 import cv2
2 cv2.__version__
Run Code Online (Sandbox Code Playgroud)
为了使这项工作,我该怎么办?
我有这样的文件夹结构,每次尝试使用相对导入时,都会出现错误
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 graphics\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 A\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 grok.py\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 spam.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 B\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar.py\n\n\nspam.py/\n def func():\n pass\nbar.py/\n def f():\n pass\nRun Code Online (Sandbox Code Playgroud)\n\n所有这些代码都在 grok.py 中进行了测试:
\n\nfrom . import spam\n# ImportError: cannot import name 'spam'\n\nfrom .spam import func\n# ModuleNotFoundError: No module named '__main__.spam'; '__main__' \nis not a package\n\nfrom ..B import bar\n# ValueError: attempted relative import beyond top-level package\nRun Code Online (Sandbox Code Playgroud)\n\n以下代码均不会导致任何错误:
\n\nfrom graphics.A import spam\nfrom graphics.A.spam import func\nfrom graphics.B import bar\nfrom graphics.B.bar …Run Code Online (Sandbox Code Playgroud)