Нет такого файла или каталога при добавлении скрипта в локальные пакеты сайта

Я сделал свой собственный модуль Python, который я хочу импортировать из любого места. Модуль, который я создал, использует текстовый файл информации для запуска.

Я побежал python -m site --user-siteи создал этот каталог, и я поместил копию моего модуля и текстовый файл в site-packages каталог, перезапустил IDLE и затем попытался импортировать мой модуль. Я столкнулся с этой ошибкой:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import MyModule
  File "C:\Users\User\AppData\Roaming\Python\Python27\site-packages\MyModule.py", line 34, in <module>
    with open('TextFile.txt') as p:
IOError: [Errno 2] No such file or directory: 'TextFile.txt'

Вот как выглядел мой модуль:

import blah

...

with open('TextFile.txt') as p:
    p.read()

почему происходит эта ошибка? Файл находится в том же каталоге!

1 ответ

Оказывается, когда вы импортируете сайт-пакет, он выполняется в текущем каталоге, а не в site-packages каталог.

Чтобы исправить эту ошибку, нужно указать путь к нужному файлу.
Например, вы должны изменить строку 34 MyModule, чтобы соответствовать этому коду:

with open('C:\Users\User\AppData\Roaming\Python\Python27\site-packages\TextFile.txt') as p:

В качестве альтернативы, вы можете изменить текущий каталог на site-packagesили получите копию нужного файла (в данном случае TextFile.txt) в текущем каталоге в качестве быстрого исправления без изменения вашего модуля.

Другие вопросы по тегам