【问题标题】:Adding modules in atom in python在python中的atom中添加模块
【发布时间】:2018-11-24 07:01:18
【问题描述】:

我的计算机上安装了模块 pygame 和 tkinter,但我无法在文本编辑器 atom 中找到如何访问它们。我可以使用

在 IDLE 中使用它们
import pygame 

但是当我尝试在 atom 中导入它时,它无法识别该模块。有人知道为什么吗?顺便说一句(时间、随机等),我所有的其他导入都可以工作,但我认为它们可以工作,因为它们是随 python 一起安装的(对吗?)。

【问题讨论】:

  • 可能与您的系统路径变量有关。尝试运行 python -c "import sys; print(sys.path);" 并确保包含您的模块的目录在那里。
  • 这就是它所说的。我不知道这是什么意思。 (顺便说一下,我在 python 之后添加了一个 3,因为我使用的是 python 3)。 ['', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/bstanley2022/Library/Python/3.7/lib/python/site-packages', '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']

标签: python module atom-editor


【解决方案1】:

首先,atom 是一个文本编辑器,它本身不运行 python 代码。所以当你说你试图“在 atom 中导入它”时,我不得不假设你正在使用一个可以解释代码的 atom 插件。一个常见的插件是“脚本”。

您需要前往 atom 设置以检查正在使用的 python 安装。首先使用control+, 输入原子设置,然后单击导航器上的“包”,然后单击“脚本”(或您用于运行代码的任何插件,例如脚本、氢、原子运行器等.)。在脚本设置中,点击“查看代码”,会打开脚本的源代码。在左侧的树导航器上,导航到 script-->lib-->grammars-->python.coffee

在这个coffeescript 文件中,您应该找到atom-script 正在使用的python 解释器。例如,由于我使用 anaconda,所以我的内容如下:

exports.Python =
  'Selection Based':
    command: '/home/username/.miniconda3/envs/local35/bin/python'
    args: (context) -> ['-u', '-c', context.getCode()]

如果你运行linux或mac,现在你可以打开终端运行

which python

import pygame 如果系统 python 匹配正在使用的一个原子,理论上应该可以工作,所以这些可能会有所不同。只需将coffeescript文件中的python路径替换为which python的结果即可。如果这些已经相同,则此过程至少应该为您提供一些线索以进一步诊断问题。

就个人而言,我建议使用 Anaconda 来跟踪您的 Python 环境和模块,它确实可以帮助解决此类问题。

还要确保python -c "import pygame" 有效,因为如果无效,这根本不是原子问题。

【讨论】:

  • 我在使用python -c "import pygame" 时收到此错误。那这是什么问题?我认为它与路径有关,因为它可以在空闲状态下正常工作。这是错误bstanley2022-mac:grammars bstanley2022$ python -c "import pygame" Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named pygame
  • 在这种情况下,这个问题的框架不正确;它与Atom无关。这是一个非常基本的 python 错误,它只是意味着 python 看不到模块。如果没有更多信息,我无法告诉您解决方法,但请花一些时间阅读类似的问题,我相信您会弄清楚的。如果不是,请提出一个新问题,但先编译有关该问题的更多信息。
【解决方案2】:

我是新用户。 John Kealy 的回答有助于解决我的 Atom 1.40.1(使用 Script 3.18.1,)“..module not found”问题。来自 Python 3.7 解释器:

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32

我的点子列表:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\erica> pip list
Package         Version
--------------- -----------
bleak           0.5.0
bricknil-bleak  0.3.1
cycler          0.10.0
kiwisolver      1.1.0
matplotlib      3.1.1
mpmath          1.1.0
numpy           1.16.4
pip             19.2.3
pybluez         0.22
pyparsing       2.4.0
python-dateutil 2.8.0
pythonnet       2.4.0
pyVIP           1.3.0
scipy           1.3.0
setuptools      41.2.0
six             1.12.0
sympy           1.4
virtualenv      16.7.4
wheel           0.33.4
winrt           1.0.19128.1

我右键单击 Python 解释器图标并从属性对话框中复制了目标字符串:

C:\Users\erica\AppData\Local\Programs\Python\Python37\python.exe

来自 John 提到的 python.coffee 脚本,其中“command:”最初为:

exports.Python =
    'Selection Based':
      command: 'python'
      args: (context) -> ['-u', '-c', context.getCode()]

    'File Based':
      command: 'python'
      args: ({filepath}) -> ['-u', filepath]

然后我修改为:

exports.Python =
'Selection Based':
  command: 'C:/Users/erica/AppData/Local/Programs/Python/Python37/python'
  args: (context) -> ['-u', '-c', context.getCode()]

'File Based':
  command: 'C:/Users/erica/AppData/Local/Programs/Python/Python37/python'
  args: ({filepath}) -> ['-u', filepath]

所以现在我可以在我的 test.py 文件中包含此代码:

import bluetooth as bt
for e in bt.__dict__:
    print(e)

...和 ​​cntrl-shift-b 到我的 Atom 屏幕底部的脚本输出窗口中的结果:

[Command: C:/Users/erica/AppData/Local/Programs/Python/Python37/python -u     C:\Users\erica\AppData\Local\Programs\Python\Python37\test.py]
__name__
__doc__
__package__
__loader__
__spec__
__path__
__builtins__
__file__
__cached__
sys
os
btcommon
struct
binascii
L2CAP
RFCOMM
PORT_ANY
SDP_SERVER_CLASS
BROWSE_GRP_DESC_CLASS
PUBLIC_BROWSE_GROUP
SERIAL_PORT_CLASS
LAN_ACCESS_CLASS
DIALUP_NET_CLASS
IRMC_SYNC_CLASS
OBEX_OBJPUSH_CLASS
OBEX_FILETRANS_CLASS
IRMC_SYNC_CMD_CLASS
HEADSET_CLASS
CORDLESS_TELEPHONY_CLASS
AUDIO_SOURCE_CLASS
AUDIO_SINK_CLASS
AV_REMOTE_TARGET_CLASS
ADVANCED_AUDIO_CLASS
AV_REMOTE_CLASS
VIDEO_CONF_CLASS
INTERCOM_CLASS
FAX_CLASS
HEADSET_AGW_CLASS
WAP_CLASS
WAP_CLIENT_CLASS
PANU_CLASS
NAP_CLASS
GN_CLASS
DIRECT_PRINTING_CLASS
REFERENCE_PRINTING_CLASS
IMAGING_CLASS
IMAGING_RESPONDER_CLASS
IMAGING_ARCHIVE_CLASS
IMAGING_REFOBJS_CLASS
HANDSFREE_CLASS
HANDSFREE_AGW_CLASS
DIRECT_PRT_REFOBJS_CLASS
REFLECTED_UI_CLASS
BASIC_PRINTING_CLASS
PRINTING_STATUS_CLASS
HID_CLASS
HCR_CLASS
HCR_PRINT_CLASS
HCR_SCAN_CLASS
CIP_CLASS
VIDEO_CONF_GW_CLASS
UDI_MT_CLASS
UDI_TA_CLASS
AV_CLASS
SAP_CLASS
PNP_INFO_CLASS
GENERIC_NETWORKING_CLASS
GENERIC_FILETRANS_CLASS
GENERIC_AUDIO_CLASS
GENERIC_TELEPHONY_CLASS
UPNP_CLASS
UPNP_IP_CLASS
UPNP_PAN_CLASS
UPNP_LAP_CLASS
UPNP_L2CAP_CLASS
VIDEO_SOURCE_CLASS
VIDEO_SINK_CLASS
SDP_SERVER_PROFILE
BROWSE_GRP_DESC_PROFILE
SERIAL_PORT_PROFILE
LAN_ACCESS_PROFILE
DIALUP_NET_PROFILE
IRMC_SYNC_PROFILE
OBEX_OBJPUSH_PROFILE
OBEX_FILETRANS_PROFILE
IRMC_SYNC_CMD_PROFILE
HEADSET_PROFILE
CORDLESS_TELEPHONY_PROFILE
AUDIO_SOURCE_PROFILE
AUDIO_SINK_PROFILE
AV_REMOTE_TARGET_PROFILE
ADVANCED_AUDIO_PROFILE
AV_REMOTE_PROFILE
VIDEO_CONF_PROFILE
INTERCOM_PROFILE
FAX_PROFILE
HEADSET_AGW_PROFILE
WAP_PROFILE
WAP_CLIENT_PROFILE
PANU_PROFILE
NAP_PROFILE
GN_PROFILE
DIRECT_PRINTING_PROFILE
REFERENCE_PRINTING_PROFILE
IMAGING_PROFILE
IMAGING_RESPONDER_PROFILE
IMAGING_ARCHIVE_PROFILE
IMAGING_REFOBJS_PROFILE
HANDSFREE_PROFILE
HANDSFREE_AGW_PROFILE
DIRECT_PRT_REFOBJS_PROFILE
REFLECTED_UI_PROFILE
BASIC_PRINTING_PROFILE
PRINTING_STATUS_PROFILE
HID_PROFILE
HCR_PROFILE
HCR_PRINT_PROFILE
HCR_SCAN_PROFILE
CIP_PROFILE
VIDEO_CONF_GW_PROFILE
UDI_MT_PROFILE
UDI_TA_PROFILE
AV_PROFILE
SAP_PROFILE
PNP_INFO_PROFILE
GENERIC_NETWORKING_PROFILE
GENERIC_FILETRANS_PROFILE
GENERIC_AUDIO_PROFILE
GENERIC_TELEPHONY_PROFILE
UPNP_PROFILE
UPNP_IP_PROFILE
UPNP_PAN_PROFILE
UPNP_LAP_PROFILE
UPNP_L2CAP_PROFILE
VIDEO_SOURCE_PROFILE
VIDEO_SINK_PROFILE
SERVICE_RECORD_HANDLE_ATTRID
SERVICE_CLASS_ID_LIST_ATTRID
SERVICE_RECORD_STATE_ATTRID
SERVICE_ID_ATTRID
PROTOCOL_DESCRIPTOR_LIST_ATTRID
BROWSE_GROUP_LIST_ATTRID
LANGUAGE_BASE_ATTRID_LIST_ATTRID
SERVICE_INFO_TIME_TO_LIVE_ATTRID
SERVICE_AVAILABILITY_ATTRID
BLUETOOTH_PROFILE_DESCRIPTOR_LIST_ATTRID
DOCUMENTATION_URL_ATTRID
CLIENT_EXECUTABLE_URL_ATTRID
ICON_URL_ATTRID
SERVICE_NAME_ATTRID
SERVICE_DESCRIPTION_ATTRID
PROVIDER_NAME_ATTRID
SDP_UUID
UDP_UUID
RFCOMM_UUID
TCP_UUID
TCS_BIN_UUID
TCS_AT_UUID
OBEX_UUID
IP_UUID
FTP_UUID
HTTP_UUID
WSP_UUID
BNEP_UUID
UPNP_UUID
HIDP_UUID
HCRP_CTRL_UUID
HCRP_DATA_UUID
HCRP_NOTE_UUID
AVCTP_UUID
AVDTP_UUID
CMTP_UUID
UDI_UUID
L2CAP_UUID
IAC_GIAC
IAC_LIAC
BluetoothError
is_valid_address
is_valid_uuid
to_full_uuid
sdp_parse_size_desc
sdp_parse_uuid
sdp_parse_int
sdp_parse_data_elementSequence
sdp_parse_data_element
sdp_parse_raw_record
sdp_make_data_element
__version__
_dbg
have_widcomm
dll
sysroot
_msbt
msbt
bt
discover_devices
read_local_bdaddr
lookup_name
BluetoothSocket
advertise_service
stop_advertising
find_service
DeviceDiscoverer
[Finished in 0.417s]

另外,来自inquiry.py:

import bluetooth

print("performing inquiry...")

nearby_devices = bluetooth.discover_devices(
    duration=8, lookup_names=True, flush_cache=True, lookup_class=False)

print("found %d device(s)" % len(nearby_devices))

for addr, name in nearby_devices:
    try:
        print("  %s - %s" % (addr, name))
    except UnicodeEncodeError:
        print("  %s - %s" % (addr, name.encode('utf-8', 'replace')))

...再次 cntrl-shift-b 到我的 Atom 屏幕底部的脚本输出窗口中的结果:

performing inquiry...
found 1 device(s)
98:FD:B4:47:0D:14 - HP Bluetooth Mouse X4000b
[Finished in 10.601s]

似乎我现在可以访问我的 Python 模块了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 2018-04-08
    • 2016-01-10
    • 2018-06-07
    • 2019-10-11
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多