Как найти расположение исходников модуля Python?
Однако многие встроенные модули написаны на C, и поэтому модуль .__ file__ указывает на файл .so (в Windows нет модуля .__ file__), и поэтому вы не можете видеть исходный код. Вы можете вручную перейти и проверить содержимое переменной PYTHONPATH, чтобы найти каталоги, из которых импортируются эти встроенные модули.
Запуск «python -v» из командной строки покажет вам, что импортируется и откуда. Это полезно, если вы хотите узнать расположение встроенных модулей.
Как узнать где расположена функция?
Т.е. если я хочу узнать где находится модуль flask:
— import flask
-import sys
-sys.modules[‘flask’]
Получу путь к папке с названием «flask».
Что делать если я хочу найти функцию например flask.request? Как получить путь до этой функции (название файла в котором находится определение этой функции, в папке flask много папок)?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
С++ как узнать ip компа на котором расположена программа?
winsock плиз если можно простой пример — типо для консольного приложения без MFC, структур и.
Как узнать на каких координатах расположена в трее нужная программе иконка?
Надо как то узнать где именно в трее расположена нужная мне иконка, например иконка звука, или.
Как должно выглядеть условие, если перед ним расположена функция?
Здравствуйте. Подскажите, пожалуйста, каким образом нужно изменить скрипт, чтобы можно было.
Как узнать, что попадает в аргументы, чтоб узнать где ошибка кода?
Всем привет! Не уверен, что смог правильно сформулировать вопрос. Делаю проект на учебе, не.
4615 / 2036 / 359
Регистрация: 17.03.2012
Сообщений: 10,103
Записей в блоге: 6
Несколько сбивает с толку это ваше «т. е». Вроде как мы уже общались ранее на эту тему. Но мы не общались, это точно.
По поводу вопроса. Обычно, если в голове крутиться, что функция есть, но запрятана где-то глубоко в модуле — ищут в документации.
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
В Linux надо в терминале перейти в каталог и просто выполнить:
grep -rl 'ключевое слово' .
529 / 384 / 247
Регистрация: 31.05.2016
Сообщений: 1,045
1 2 3
import flask print(flask.__file__)
Регистрация: 13.10.2016
Сообщений: 195
после того как я импортирую функцию, вы уверены что нет никаких средств по определению из какого именно файла она была импортирована?
Добавлено через 2 минуты
мне не это надо (print(flask.__file__)).
мне надо узнать в каком файле находится функция request.
from flask import request
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение было отмечено Четверг как решение
Решение
request это не функция, а атрибут модуля в который записан экземпляр класса. Судя по всему документацию вы не пробовали читать.
>>> type(request) class 'werkzeug.local.LocalProxy'>
Вот его местоположение уже можно узнать (как и любого модуля, класса, метода или функции, кроме встроенных) c помощью интроспекции:
1 2 3 4
>>> import werkzeug >>> import inspect >>> inspect.getsourcefile(werkzeug.local.LocalProxy) '. \\Python3\\lib\\site-packages\\werkzeug\\local.py'
Регистрация: 13.10.2016
Сообщений: 195
это переменная модуля которой присвоили экземпляр класса? как она прикидывается пустым списком?
5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
Сообщение от Четверг
как она прикидывается пустым списком?
Это неверное утверждение — не туда посмотрел и потом не успел исправить пост.
Сообщение от Четверг
. которой присвоили экземпляр класса?
Добавлено через 14 минут
request один из глобальных объектов фласка (за которые его часто ругают).
И все они находятся в модуле globals.py
1 2 3 4 5 6 7
# context locals _request_ctx_stack = LocalStack() _app_ctx_stack = LocalStack() current_app = LocalProxy(_find_app) request = LocalProxy(partial(_lookup_req_object, 'request')) session = LocalProxy(partial(_lookup_req_object, 'session')) g = LocalProxy(partial(_lookup_app_object, 'g'))
Через inspect получить его расположение можно (предполагаю) только при запущенном сервере и созданном flask приложении, иначе flask выдает ошибку при попытке что-то сделать с ним.
Регистрация: 13.10.2016
Сообщений: 195
глобальный объект = глобальная переменная?
фласк стоит изучать или на практике мало применим?
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
Сообщение от Четверг
глобальный объект = глобальная переменная?
В общем да. Если выполнить:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/env python3 # -*- coding: utf-8 -*- def variables(): var1 = 10 print("\nЛокальные переменные:") print(locals()) if __name__ == '__main__': print("Глобальные переменные:") print(globals()) variables() print("\nСодержимое модуля:") print(dir())
То вывод будет примерно таким:
Глобальные переменные: , '__spec__': None, '__annotations__': <>, '__builtins__': , '__file__': './test_77.py', '__cached__': None, 'variables': > Локальные переменные: Содержимое модуля: ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'variables']
То есть имя функции тоже оказывается в списке глобальных переменных.
Но если вы о рекомендации не множить глобальные переменные, то там речь идет о переменных, которые создаются человеком непосредственно.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как обратиться к api из программы, запущенной на том же сервере, где расположена api
Доброго времени суток Есть программа и api написанные на Blazor, которые работают под iis на.
Как узнать, где в этой программе код С++, а где WinApi?
В среде Visual C++ создали оконное приложение (Файл->Новый->Проекты->Win32 Application, далее.
Где расположена точка
Система координат образует 4 квадрата. С клавиатуры ввести координаты X,Y. Найти какому из.
Где расположена лампа подсветки
прив! где расположена лампа подсветки? как добраться до лампы подсветки?
Узнать которая из двух последних точек (В или С) расположена ближе к А
Разработать программное обеспечение а котором следующие: на числовой осе расположенные три точки A.
Как найти местоположение модуля Python?
Скрипт на Python использует некий модуль. С помощью какой команды можно найти его местоположение на диске машины?
Отслеживать
9,366 4 4 золотых знака 40 40 серебряных знаков 56 56 бронзовых знаков
задан 23 апр 2017 в 10:11
369 2 2 золотых знака 7 7 серебряных знаков 18 18 бронзовых знаков
find . -name «нейкий модуль»
23 апр 2017 в 10:23
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
import some_module import sys import os for path in sys.path: if os.path.exists(os.path.join(path, 'some_module')): print('some_module is here: <>'.format(path))
«Трюк» здесь заключается в том, что где бы интерпретатор не встретил строку
from somewhere import something
он ищет somewhere в sys.path . И если не находит — выбрасывается исключение ImportError . При этом при запуске интерпретатора, текущий путь (или при запуске скрипта python path/to/script.py путь path/to ) добавляется в sys.path .
2-й вариант (попроще):
import some_module print(some_module.__file__) >>> import openpyxl >>> print (openpyxl.__file__) D:\Python\lib\site-packages\openpyxl-2.3.0_b1-py2.7.egg\openpyxl\__init__.pyc >>>
Но 2-й вариант можно «обмануть», явно определив в модуле переменную __file__
Как пути поиска Python используются в Visual Studio
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code
При стандартном использовании Python переменная среды PYTHONPATH (или IRONPYTHONPATH и т. д.) предоставляет путь поиска по умолчанию для файлов модулей. То есть, когда вы используете инструкцию from import. или import , в Python выполняется поиск совпадающего имени в следующих расположениях в указанном порядке:
- Встроенные модули Python.
- Папка с кодом Python, который вы используете.
- Расположение по пути поиска модуля, определенное в переменной среды. (См. сведения в разделах о пути поиска модуля и переменных среды в основной документации Python.)
Тем не менее Visual Studio игнорирует переменную среды для пути поиска, даже если она задана для всей системы. На самом деле она не учитывается именно из-за того, что задана для всей системы, так как в этом случае возникают некоторые вопросы, на которые нельзя ответить автоматически: для какого окружения предназначены указанные модули — для Python 2.7 или Python 3.6+? нужно ли переопределять стандартные модули библиотеки и знает ли разработчик о подобном поведении или это попытка атаки.
Таким образом, в Visual Studio можно напрямую указать пути поиска как в окружениях, так и в проектах. Код, который выполняется или отлаживается в Visual Studio, получает пути поиска из переменной PYTHONPATH (и других ее аналогов). Если вы добавляете пути поиска, Visual Studio проверяет библиотеки в этих расположениях и при необходимости создает для них базы данных IntelliSense (Visual Studio 2017 версии 15.5 и более ранних версий; это может занять некоторое время в зависимости от числа библиотек).
Чтобы добавить путь поиска, в Обозревателе решений разверните узел проекта, щелкните правой кнопкой мыши элемент Пути поиска и выберите Добавить папку в путь поиска…
Эта команда отображает браузер, в котором можно выбрать включаемую папку.
Если ваша переменная среды PYTHONPATH уже включает в себя требуемые папки, для ускорения процесса используйте команду Добавить PYTHONPATH в путь поиска.
После добавления папок в пути поиска Visual Studio использует эти пути для любой среды, связанной с проектом. (Если окружение создано на основе Python 3, может произойти ошибка при попытке добавить путь поиска для модулей Python 2.7.)
Файлы с расширением ZIP или EGG также можно добавить в качестве путей поиска. Для этого нужно выбрать Добавить ZIP-архив в путь поиска. Как и при использовании папок, содержимое этих файлов проверяется и предоставляется для IntelliSense.
См. также
- Управление окружениями Python в Visual Studio
- Выбор интерпретатора для проекта
- Использование файла requirements.txt для зависимостей
- Справочная информация по окну «Окружения Python»