Вопрос по python – Импортирует работу с необработанным файлом, но не в IDLE

1

UPDATE 10 Secs later
Исправлено теперь правильно, и благодаря JF и Gauden.

UPDATE
Я нашел временное исправление, сохранив файл IDLE в каталоге, в котором находится другой рабочий файл. (Я все еще хотел бы знать, как исправить это полностью, если смогу.)

Это не постоянное исправление, поэтому, если вы хотите попробовать и помочь заставить его работать везде, где сохранен файл, не стесняйтесь.

Это начало файла Python:

#!/usr/bin/python
# -*- coding: utf-8  -*-
import wikipedia
import pagegenerators
import sys
import re
import pywikibot
from pywikibot import *

(Возможно, вы заметили, что это сценарий Pywikipedia, но я думаю, что это не имеет отношения к делу)

Этот файл работает нормально из командной строки.

Однако, когда я пытаюсь использовать IDLE для разработки сценария или просто использовать интерпретатор IDLE, я получаю сообщение об ошибке:

>>> import wikipedia

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    import wikipedia
ImportError: No module named wikipedia

Я действительно не имею понятия, почему он не работает.

Я также попробовал это:

>>> imp.find_module("wikipedia.py","f:/ake/pa/th/")

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    imp.find_module("wikipedia.py","f:/ake/pa/th/")
ImportError: No frozen submodule named f:/ake/pa/th/.wikipedia.py

Путь, указанный в журнале ошибок, является правильным путем к файлу wikipedia.py, просто так. доwikipedia.py.

Затем я попытался добавить путь кsys.path, но это тоже не сработало:

>>> import sys
>>> sys.path.append("c/users/adam/py")
#the same error...

Path to the module: `C: \ Users \ joe_bloggs \ пй \ wikipedia.pyc

Python executable: Командная строка:C:\Python27\python.exe, IDLE:C:\Python27\pythonw.exe

PYTHONPATH броски, в обоих:

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    print os.environ['PYTHONPATH'].split(os.pathsep)
  File "C:\Python27\lib\os.py", line 423, in __getitem__
    return self.data[key.upper()]
KeyError: 'PYTHONPATH'

OS: Windows 7

Python version: 2.7.2

A new PATH: IDLE и командная строка:

C:\Program Files\Common Files\Microsoft Shared\Windows Live
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live
C://Python27
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Bin
C:\Program Files (x86)\QuickTime\QTSystem\
C:\Program Files (x86)\Windows Live\Shared
ACarter и @ J.F.Sebastian: Привет! Я превратил свой ответ в вики сообщества. Не стесняйтесь редактировать, чтобы включить решение JF, и мы можем оставить это как ресурс для будущих посетителей. Спасибо за коллегиальность. gauden
Спасибо @ J.F.Sebastian, который был более бдительным. Вы должны сказатьsys.path.append("c:/users/joe_bloggs/py")... После всего этого JF заслуживает того, чтобы поставить ответ и получить зеленую галочку gauden
@ J.F. Вы хотите поставить это как ответ? (Потому что в противном случае я поставлю это (все еще говоря, что вы видели это), чтобы этот вопрос был помечен как решенный.) ACarter
ваш sys.path отсутствует: jfs
ACarter: нет. Можно ответить на ваши собственные вопросы. Общие инструкции из ответа @ gauden кажутся более подходящими для будущих посетителей. jfs

Ваш Ответ

2   ответа
0

вленную библиотеку на мой Raspberry Pi. Я следовал всем инструкциям по установке библиотеки (Adafruit RHT Sensor) и все работало нормально из терминала. Однако я не смог заставить его работать изнутри IDLE.

Оказалось, что проблема заключалась в том, что на Raspberry Pi установлены и Python 2, и 3. Установка, которую я сделал (с помощью команды «python»), применима только к Python 2. Мне пришлось выполнить другую установку, используя «python3»; Команда установить его для Python 3. После этого я перезапустил IDLE и все заработало нормально.

Вышеуказанное предложение напечатать путь к исполняемому файлу sys помогло выявить несоответствие:

import sys
print sys.executable
2

EDIT Ответ на поставленный выше вопрос оказался довольно простым, но я редактирую этот ответ в качестве возможного контрольного списка для устранения неполадок для дальнейшего использования, а также в качестве контрольного списка для тех, кому, возможно, потребуется подготовить вопросы такого рода в будущем.

CLUE 1: What is the path to the module you are importing?
>>> import wikipedia
>>> print wikipedia.

Это даст вам путь к скомпилированному модулю, и это одна подсказка.

CLUE 2: What is the path to the Python executable?

(Смотрите также этот вопрос).

>>> import sys
>>> print sys.executable

Попробуйте это в оболочке и в сценарии IDLE. Если два результата отличаются, то вы используете два интерпретатора Python, и только один из них имеет путь, который указывает наwikipedia модуль.

CLUE 3: What is the sys.path?

Также повторите это как в оболочке, так и в виде скрипта в IDLE.

>>> print '\n'.join( sys.path )

(Вы можете использоватьsys.path.append("d:/irectory/folder/is/in") добавить это место вsys.path, Это должно добавить этот каталог в список мест, где Python ищет модули.)

CLUE 4: What is the PYTHONPATH and does it differ in the two environments?

(Смотрите также этот ответ).

Наконец, повторите это как в оболочке, так и в виде скрипта в IDLE.

>>> import os
>>> print '\n'.join( os.environ['PATH'].split(os.pathsep) )

Снова обратите внимание на два результата (из shell и из IDLE) и посмотрите, есть ли разница в PYTHONPATH в двух средах.

Если все эти тесты окажутся неокончательными, я бы добавил как можно больше этой информации к вашему вопросу, чтобы она могла помочь вам получить дальнейшие конкретные указания. Также добавьте, какую операционную систему вы используете, и любые полученные обратные ссылки.

Error: User Rate Limit ExceededC:\Python27\pythonw.exeError: User Rate Limit ExceededC:\Python27\python.exeError: User Rate Limit Exceeded.exe? ACarter
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded ACarter
Error: User Rate Limit Exceededf:\ake\pa\th\wikipedia.pycError: User Rate Limit Exceeded ACarter

Похожие вопросы