Изменение каталога, в котором создаются файлы .pyc

Есть ли способ изменить каталог, в котором .pyc файл создается интерпретатором Python? Я видел двух PEP на эту тему (0304 и 3147), но, похоже, ни один из них не реализован в интерпретаторе по умолчанию (я работаю с Python 3) .

Я что-то пропустил ?


person Scharron    schedule 19.08.2010    source источник
comment
Можете ли вы рассказать нам больше о том, почему вы хотите их переместить?   -  person Ned Batchelder    schedule 19.08.2010
comment
Это было просто из любопытства, чтобы содержать каталоги в чистоте.   -  person Scharron    schedule 19.08.2010
comment
Я думал о том же самом. У меня есть случай, когда каталоги с исходными файлами недоступны для записи, и я хочу переместить pycache, чтобы все пользователи могли извлечь выгоду из кеша, не имея доступа для записи к фактическим каталогам исходных файлов python.   -  person mattgately    schedule 16.11.2017


Ответы (4)


Невозможно изменить расположение файлов .pyc. Python 3.2 реализует схему __pycache__, согласно которой все файлы .pyc помещаются в каталог с именем __pycache__. Python 3.2 alpha 1 уже доступен, если вам действительно нужно содержать каталоги в чистоте.

Пока не будет выпущена версия 3.2, настройте как можно больше инструментов, чтобы они игнорировали файлы .pyc.

person Ned Batchelder    schedule 19.08.2010
comment
Ваши пользовательские файлы .py компилируются и сохраняются в файле .pyc в папке __pycache__ в том же каталоге. Вы найдете общие скомпилированные файлы в разделе C:\Python34\Lib\__pycache__. - person Aniket Thakur; 02.10.2015
comment
Этот ответ устарел, проверьте stackoverflow.com/a/60024195/880783 - person bers; 03.11.2020

Это может быть полезно для некоторых: Разные параметры, особенно -B:

Если указано, Python не будет пытаться записывать файлы .pyc при импорте исходных модулей. См. также PYTHONDONTWRITEBYTECODE.

person Hans    schedule 29.08.2011

Да, начиная с Python 3.8 вы можете управлять этим поведением. Первоначальное обсуждение началось с pep 304 в 2003 году.

Хотя этот первоначальный PEP был отозван, вариант этой функции был в конечном итоге реализован для Python 3.8 в https://bugs.python.org/issue33499

В результате вы можете управлять с помощью PYTHONPYCACHEPREFIX=path, -X pycache_prefix=path и sys.pycache_prefix.

person funnydman    schedule 02.02.2020

Файлы Python НЕ всегда хранятся в одном и том же каталоге и будут перенаправлены в pycache, если вы используете pycache. Любые ответы о возможности иметь пользовательские местоположения и имена, потому что импорт модуля довольно темпераментный и не всегда работает. Вы сможете увидеть, что я имею в виду, на github.com/LolexInc/Lolex-Tools/tree/Beta и просмотреть JTToolsInstaller.py. В нем много беспорядка.

person Lolex Inc    schedule 08.09.2016