调试和运行时,我在pycharm中输入错误。
我的项目结构已正确生根etc./HW3/.
,因此HW3
是根目录。
我在HW3中有一个子文件夹util
和一个文件util/util.py
。我在util
中有另一个名为run_tests.py
的文件。
在run_tests.py
中,我有以下导入结构,
from util.util import my_functions, etc.
这会产生输入错误from util.util import load_dataset,proportionate_sample
ImportError: No module named 'util.util'; 'util' is not a package
但是,在完全相同的项目中,在名为util
的另一个目录(与data
相同的级别)中,我有一个文件data/data_prep.py
,它还从{{1}导入函数使用类似的import语句......它运行没有任何问题。
显然,我在做作业的过程中这样做,所以请理解:这是作业范围的辅助。
当我将文件移动到另一个目录时,问题就消失了。所以我想这个问题是如何导入位于pycharm项目中同一目录下的python文件?因为如果我只是util/util.py
并且提示我使用pycharm,pycharm会引发错误来自root的全名。
答案 0 :(得分:39)
推荐方式:
确保将工作文件夹设置为Sources
。
您可以在Pycharm
->
Preferences
->
Project: XYZ
->
Project Structure
选择您的工作文件夹并将其标记为Sources
。然后Pycharm将工作文件夹识别为项目的Source文件夹,您可以使用
import filename.py
或
from filename.py import mudule1
=================
不推荐的方式:
在Pycharm
中,您只需在.
文件之前添加.py
,即可从相同文件夹中导入from .util import my_functions
文件。在你的情况下它将是
import google.cloud.logging
from google.cloud.logging.handlers import CloudLoggingHandler
from google.cloud.logging.handlers.transports.sync import SyncTransport
client = google.cloud.logging.Client.from_service_account_json('serviceAccountKey.json')
handler = CloudLoggingHandler(client, name='slackbot', transport=SyncTransport)
stackdriver = logging.getLogger('slackbot')
stackdriver.setLevel(logging.DEBUG)
stackdriver.addHandler(handler)
答案 1 :(得分:10)
如果您没有__init__.py
创建一个并添加此行
from util.util import my_function
然后您可以轻松地在脚本中导入模块
__init__.py
告诉python它应该将该文件夹视为python包,它也可以用于导入/加载模块。
在大多数情况下,__init__.py
为空。
引用文档
需要__init__.py文件才能让Python对待 目录包含包;这是为了防止 无意中具有通用名称的目录,例如string 隐藏稍后在模块搜索路径上发生的有效模块。在 最简单的情况,__ init__.py可以只是一个空文件,但它可以 还执行包的初始化代码或设置__all__ 变量,稍后描述。
答案 2 :(得分:5)
右键单击要标记为源的文件夹>将目录标记为>源根。
答案 3 :(得分:1)
注意:可能有点无关。
我遇到了同样的问题,但在运行 jupyter笔记本时,我无法在同一目录中导入模块(而不是OP所要求的子目录)(这里的目录没有'有__init__.py)。奇怪的是,我设置了python路径和解释器位置和一切。没有其他答案有帮助,但改变了python中的目录。
column2
我在select *
from table
where ref = 1 and column1 = column2
import os
os.chdir(/path/to/your/directory/)
答案 4 :(得分:1)
我与pycharm有相同的问题,但是实际的错误是我尝试导入的文件没有.py扩展名,即使我能够将其作为独立脚本运行。在资源管理器窗口中查找并确保其扩展名为.py。如果没有,请右键单击资源管理器窗口中的文件,选择“重构”,然后使用.py扩展名重命名。
答案 5 :(得分:1)
就我而言,仅当我省略扩展名时它才起作用。示例:
import filename
答案 6 :(得分:0)
在Pycharm中转到“运行-配置”,然后取消选中 '将内容根添加到Pythonpath'和 “将源根添加到Pythonpath”, 然后使用
UndefinedBehaviorSanitizer:DEADLYSIGNAL
==1074==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x00000042acda (pc 0x000000422519 bp 0x7ffe697712d0 sp 0x7ffe697711f0 T1074)
==1074==The signal is caused by a WRITE memory access.
#0 0x422518 (/root/sandbox/crack+0x422518)
#1 0x7fb78fc7ab96 (/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
#2 0x402a79 (/root/sandbox/crack+0x402a79)
UndefinedBehaviorSanitizer can not provide additional info.
==1074==ABORTING
答案 7 :(得分:0)
对我来说,问题是源目录已正确标记,但是要导入的文件以数字值开头。重命名即可解决。
import 01_MyModuleToImport
到
import MyModuleToImport
答案 8 :(得分:-4)
ModuleNotFoundError:没有名为' appTwo'
的模块from django.conf.urls import url,include
from django.contrib import admin
from appTwo import views
urlpatterns = [
url(r'^$',views.index,name='index'),
url(r'^admin/', admin.site.urls),
url(r'^users/',include('appTwo.urls')),
]