Файл описания модуля module root не найден
После извлечения модуля из GitHub и следуя инструкциям по его сборке, я пытаюсь вставить его в существующий проект, используя:
Это, кажется, делает трюк:
Но Node.js не может найти модуль:
Я действительно хочу понять, что здесь происходит, но я немного растерялся относительно того, где искать дальше. Какие-либо предложения?
Ожидается, что node_modules каталог будет находиться в корне вашего проекта, а также app.js в вашем случае. Почему вы использовали .. путь установки npm?
После изменения «npm install ../faye» на «npm install ../faye/build» все работает как положено. Я не знаю, насколько это типично, но faye создает каталог сборки, когда он собирается, и помещает туда копию package.json. npm не жалуется на package.json на корневом уровне, но ссылается на файлы, которые не существуют на этом уровне.
Я решил проблему, но так и не смог решить свой реальный вопрос, который состоял в том, как решить эту проблему. Я постараюсь придумать несколько предложений по улучшению npm и / или узла, чтобы новичкам было легче избежать этой ситуации.
Пройдя по этой ссылке , вы можете получить представление о том, где именно он не может найти ваши модули ..
Использование npm install устанавливает модуль только в текущий каталог (в подкаталог с именем node_modules ). App.js находится под home/dave/src/server/ ? Если нет, и вы хотите использовать модуль из любого каталога, вам нужно установить его глобально, используя npm install -g .
Обычно я устанавливаю большинство пакетов локально, чтобы они регистрировались вместе с моим кодом проекта.
Обновление (8/2019):
В настоящее время вы можете использовать файл package-lock.json , который автоматически генерируется, когда npm изменяет ваш каталог node_modules. Поэтому вы можете не проверять пакеты, потому что package-lock.json отслеживает точные версии ваших узлов_модулей, которые вы сейчас используете. Для установки пакетов package-lock.json вместо package.json используйте команду npm ci .
Обновление (3/2016):
«Обычно я устанавливаю большинство пакетов локально, чтобы они регистрировались вместе с моим кодом проекта». Обычно лучше составить package.json список модулей npm, от которых вы зависите, и игнорировать node_modules папку. Затем просто npm install получить настройки после клонирования репо.
Помимо package.json перечисления зависимостей, мне нравится хранить известные хорошие копии вещей, от которых я зависим. Дисковое пространство дешево, и если npm или пакет исчезнет из npm, у меня все еще будет полностью рабочий проект в моем репо.
Как старый разработчик, я чуть не задохнулся, когда прочитал «парадигму» разработчиков Node, что «дисковое пространство дешево». У меня есть библиотеки, которые я использую. Мысль о том, что у меня может быть 100 копий (или хуже, около копий), заставляет мой желудок перевернуться. Дисковое пространство дешево, но время обслуживания дорого. Возможно, если вы делаете одноразовый игрушечный проект, обслуживание обходится дешево. Однако для реальной работы техническое обслуживание обходится дорого и не влияет на стоимость дискового пространства.
Я действительно не понимаю этот последний комментарий. Никто не говорит, что у вас есть 100 копий любого фрагмента кода, просто есть 1 копия кода, от которого зависит ваш проект. Альтернативой может быть нефункциональный проект, если NPM или зависимость исчезают однажды. Я думаю, что переписать зависимость с нуля также довольно дорого. Кроме того, я работал в Microsoft в течение 10 лет, и мы всегда проверяли зависимости сторонних производителей в нашем дереве исходных текстов.
@LloydSargent Наличие «РЯДОМ копий» не хуже, а лучше , потому что у каждого проекта есть определенная зависимость, которую вы определили, а на остальную часть вашего кода полагается. Если у вас были одинаковые версии в нескольких проектах, то если вы обновляете что-либо, вы должны обновить все . Закрепление зависимостей позволяет выполнять частичные обновления - существенно меньше затрат на обслуживание. Реальная работа, не игрушечные проекты.
У меня была очень похожая проблема. Удаление всей node_modules папки и переустановка работали для меня:
Удивительно, но ответ @ carelesslyChoosy разрешил недостающую зависимость. Кажется, что обновление и понижение с установкой npm не сохранят порядок.
Например, если ошибка:
затем вы можете решить эту проблему, выполнив команду npm install --save form-data .
похоже, что когда я установил его глобально, папка npm / node-modules была пуста, и я пытался использовать ng new project-name ее, показывая, что некоторые модули отсутствуют . Мне пришлось установить их каждый с помощью данной команды. Затем это решило проблему, но Есть ли какая-либо команда, чтобы установить их все сразу?
Команда импортирует определения NodeJS TypeScript в ваш проект, что позволяет вам использовать встроенные модули Node.
Это происходит, когда первый нпм по какой-либо причине установка (SIGINT of npm), или если задержка была слишком большой или данные повреждены. Повторная попытка установки npm не спасет проблему.
Что-то пошло не так при первой проверке npm, поэтому лучший выбор - удалить файл и перезапустить установку npm.
это поставило мне диагноз. я закончил тем, что сделал npm cache clear и очистил node_modules, а затем решил npm install мою проблему.
Если вы используете nvm, убедитесь, что существующие модули_узлов, которые являются привязками к другим библиотекам, скомпилированы для правильной версии Node.js.
У меня была такая же ошибка. Причина была в следующем: мы используем nvm, так как на сервере мы запускаем два приложения, одно требует Node.js 5.6, потому что он использует node-gd (который пока не работает на Node.js 6), другое требует Node.js 6. Node.js 6 - это установка apt-get .
Также мы используем инструмент pm2 для развертывания.
Итак, настройка по умолчанию состоит в том, что процесс pm2 запускается, когда nvm не действует, поэтому он использует установку apt-get Node.js (версия 6). Итак, основной демон pm2 начинается с Node.js 6. Если я запускаю приложения в режиме fork, они запускаются в отдельных процессах, и настройки nvm действуют. Когда я запускаю приложения в режиме кластера - они наследуют среду, отличную от nvm.
Я исправил это, перезапустив pm2, когда настройки nvm действуют. Также должны быть исправлены сценарии запуска.
Проверьте, правильно ли установлена переменная окружения NODE_PATH и указывает ли она на путь node_modules. nodejs использует эту переменную для поиска библиотек
Я upvoted это , как это решить мою проблему сразу же, и привел меня к этому Node.js документации . Но я думаю, что это не общий ответ, так как в документации указаны альтернативные стратегии для размещения модулей.
Я испытал эту ошибку вчера. Мне потребовалось некоторое время, чтобы понять, что main запись package.json указывает на файл, который я переместил. Как только я обновил, что ошибка исчезла, и пакет работал.
Святая корова . в отчаянии я набрал "Ошибка: не могу найти модуль" в Google и нашел этот вопрос. Ваш ответ решил мою проблему. Я не могу поверить, что такой смутный поисковый термин нашел правильный ответ. Слава вам и Google!
Очень это. Мне удалось указать main запись для моего подмодуля в каталоге, который был исключен из его хранилища, поэтому, когда я попытался включить его через npm install него, это сработало, но экспорт не был найден, когда это необходимо! Большое спасибо за этот очевидный, но полезный ответ.
Удалите node_module корневую папку из вашего проекта (например:) myApp . Перейдите в myApp папку и затем введите ниже команду из терминала
Он установит все зависимые модули, необходимые для вашего проекта.
Не могли бы вы более подробно изложить свой ответ, добавив немного больше описания предлагаемого вами решения?
С этой ошибкой можно столкнуться, если вы require используете модуль с отсутствующим или неправильным main полем в файле package.json. Хотя сам модуль установлен, npm / node должен использовать один файл .js в качестве точки входа в ваш модуль. Если этого main поля нет, по умолчанию его ищут index.js в папке вашего модуля. Если основной файл вашего модуля не называется index.js, он не сможет require этого сделать.
Обнаружен при превращении browserify модуля на основе в модуль CommonJS require ; browserify не заботился о пропавшем main поле, и поэтому ошибка осталась незамеченной.
Укажите путь к папке рестлера, которая будет внутри папки node_modules, например: var rest = require ('./ node_modules / restler');
Это сработало для меня.
Эта ошибка произошла со мной, борясь с усталостью и легкой болезнью, потому что я печатал node blah вместо npm blah .
Я столкнулся с той же проблемой, когда кто-то еще в команде обновился package.json в SVN. Простое удаление node_modules каталога не помогло. Как я решил проблему:
Надеюсь, это поможет кому-то!
Спасибо за напоминание. В моем случае это был package-lock.json, который снова все испортил, но после удаления и node_modules снова npm install все работает хорошо.
Удаление узла / npm, а затем повторная установка стабильной (не самой последней) версии работали для меня.
В Appsome Solutions у нас была такая же проблема с конфигурацией нашего машинописного проекта, и мы добавили ее "moduleResolution": "node", в tsconfig.json, чтобы решить ее.
Я пытался опубликовать свой собственный пакет, а затем включить его в другой проект. У меня была эта проблема из-за того, как я построил первый модуль. Я использую экспорт ES2015 для создания модуля, например, скажем, модуль выглядит так:
После компиляции с Вавилоном и до опубликования:
Так что после npm install module-name в другом проекте (нет ES2015) я должен был сделать
var hello = require('module-name').default;
Чтобы на самом деле получил пакет импортирован.
Надеюсь, это поможет!
Обнаружена эта проблема при использовании webpack с webpack-dev-middleware .
Превратил один файл в папку .
Наблюдатель, казалось, не видел новую папку, и модуль теперь отсутствовал.
Исправлено путем перезапуска процесса.
Просто нашел необычный сценарий, который может быть кому-то полезен и является своего рода красной селедкой.
Я также получал ошибку Cannot Find Module, но, как ни странно, все отлично работало в моей локальной (размещенной на Mac) среде Node.js. Эта проблема появилась только тогда, когда код был развернут на нашем сервере Linux.
Ну . оказалось, что это была опечатка, которую (по-видимому) установка Node.js на базе Mac была совершенно счастлива проигнорировать.
Включение выглядело так:
Но сам файл назывался "s3Uploader.class.js".
Обратите внимание на различие в регистре между 's' и 'S' между кодом и именем файла.
Так что - если есть вероятность, что ни одно из других решений здесь не решит вашу проблему, трижды проверьте, что вы не неправильно вводите символы во включенном имени файла! :)
По умолчанию файловая система osx (HFS +) нечувствительна к регистру . обнаружена не так давно, но она определенно настраивается
Пожалуйста, установите новый CLI v3 (npm install -g ionic @ latest).
Если эта проблема все еще проблема в CLI v3. Спасибо!
Если пакет успешно установлен, перейдите в папку node_modules, затем проверьте файл и путь. Затем импортируйте. Надеюсь это поможет.
Прежде всего, да, часть моего ответа определенно полезна для устранения ошибки, которую выдает OP. Во-вторых, после попытки выполнения нижеприведенного шага я столкнулся с парой других ошибок, и поэтому написал решение этих проблем.
(Psst! Я не уверен, что я успешно помог в решении вышеуказанной ошибки, или я нарушил какое-то правило или формат ответа, но я столкнулся с вышеуказанной ошибкой и некоторыми другими, и мне потребовалось много времени, чтобы найти правильные решения для этих ошибок. Я пишу полное решение, потому что в случае, если кто-то еще сталкивается с этими ошибками, то он, надеюсь, найдет решение здесь.)
Итак, добавляя и развивая ответ, предоставленный PrashanthiDevi , а также добавляя мой личный опыт, вот оно:
Я новичок во всей части e2e и модульных тестов. Я начал изучать эту часть от транспортира . Теперь у меня уже были файлы, в которых были написаны тесты, но мне пришлось запускать тесты.
Я уже установил все необходимые программы и инструменты, но когда я первоначально запустил код для запуска тестов gulp itest , я получил эту ошибку «Не удается найти модуль» . Пройдя много разных вопросов по SO, я нашел один ответ, который, как мне казалось, мог бы помочь найти решение.
Человек предложил запустить команду npm install в папке моего проекта.
Причиной для этого было обновление узлов-модулей папки, в нашей папке проекта, со всеми необходимыми и необходимыми файлами и зависимостями.
(Следующая часть может быть неуместна в этом вопросе, но может быть полезна, если кто-то сталкивался с той же ситуацией, с которой я столкнулся.)
Вышеуказанный шаг наверняка решил мою предыдущую ошибку, но выкинул новую! На этот раз ошибка была Could not find chromedriver at '..\node_modules\protractor\selenium\chromedriver' .
Тем не менее, решение этой ошибки было довольно глупо (и смешно) для меня. У меня уже был файл chromedriver в моей папке селена . Но, оказывается, что вышеупомянутая ошибка прибыла, потому что мои файлы chromedriver были в папке selenium, а не в папке chromedriver . Итак, создание папки chromedriver и копирование туда файлов chromedriver решило мою проблему!
Кроме того, для ошибки: Тайм-аут ожидания сервера WebDriver , вы можете добавить эту строку кода в файл conf.js внутри exports.config<> :
Среда v2.3.9.9 плк100 rl прошивка 2.10.5 выкладываю два проекта один компилится нормально второй с ошибкой, почему?
1) Удаляем таргет через InstallTarget
2) Ручками стираем папку C:\Codesys\Targets\PLC100.R_L
3) Проставляем таргет заново.
4) Extras - standart configuration в проекте
Вуаля - все работает
огромное "спасибо" за ответ. п.4 вы грохнули конфигурацию -собственно при компиляции которой и возникает ошибка!. и связана эта ошибка вероятно с выравниванием адресации выходов при автоматическом их расчете. пока ничего не работает. побороть это можно только внесением допольнительных регистров в обмен, именно поэтому я привел пример двух конфигураций.
Проект в более полном объеме. Пробовал с доступными таргетами и версиями codesys. Компилится с ошибкой в конфигурации 3454.
Не получается открыть конфигурацию "Ошибка при чтении конфигурации ПЛК! Файл описания модуля «Module.Root» не найден."
Если я правильно понял, Вы создали проект в прошлой версии таргета.
Надо поменять таргет и пересоздать ручками конфигурацию.
Кроме, того избегайте при возможности битовых переменных в собственной конфигурации. Не совсем понятно, но у среды не получается правильно распределить память - приходится идти на ухищрения.
олег, я не совсем понял, у вас получилость скомпилировать "ошибка 3454" или нет. что в этом примере некорректного?
Проблема 3454 заключается в перекрытии IEC адресов - одни накладываются на другие. При создании модулей и подмодулей с PLC Configuration иногда возникает неправильное распределение памяти. Особенно это было заметно на версиях до CoDeSys 2.3.8.1. Сейчас ситуация резко улучшена, но, очевидно иногда возникает. Бороться можно. Варианты
1) Избегаем битовых каналов
2) (как сделал я) Переконфигурируем модули - расположение, разноисм на отдельные мастера, промежаем не нужными - типа константы, статистики
3) Пользуем библиотеки для работы с модбас, овен (не пользуем PLC_Confgiguration)
P.s ошибка у меня возникла при открытии вашего проекта (и первого(маленького) и второго). далее, я попытался воспроизвести на мелком проекте, вручную создав аналог. ошибка не возникла,из чего я заключил, что проблема в таргете. большую конфигурацию времени и желания пересоздавать не было - пришлось пойти на ухищрения :).
Ошибка возникает при распределении именно output адресов конфигурации. А 3454 воспроизвести дело 1 мин- в новом проекте модбас мастер в нем один универсал модбас девайс без регистров или с четным количеством аутпут регистров, за ним овен мастер и вуаля ошибка. Причем во всех таргетах и версиях среды
Если бы было свободное распределение адресов - это не к ПЛК. Стандарт определяет, что адреса должны быть четко прописаны и иметь соответствующе название.
Вам необходимо:
1. Открыть InstallTarget и удалить таргет файл.
2. С помощью данной же утилиты установить необходимую версию (Вы уверенны, что Вы именно нужный Target ставите. )
3. Открыть проект. Перейти в Ресурсах в Target Settings и из всплывающего списка выбрать тип контроллера. Нажать Ок.
4. Далее открываем PLC Configuration и из меню Дополнительно (Extras) делаем команду "стандартная конфигурация".
все, кажется нашел. проблема действительно в устаревших таргетах. только он новый таргет не воспринимает, если установлен параметр "открывать последний проект" в опциях проекта. даже если я этот проект закрыл(файл\закрыть) и создал новый(файл\создать), и дальше уже неважно какой версии и какого контроллера таргет выбирается-ошибка будет повторяться. попробуйте открыть "ошибка 3454" с установленным параметром "открывать последний проект", а затем воспользоваться вашими рекомендациями. здесь таки есть баг.
Powered by vBulletin® Version 4.2.3 Copyright © 2022 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot
В этом посте представляю несколько простых программ для контроллеров, заточенных под CoDeSyS 2.3 и CoDeSyS 3.5. По максимуму представлены несколько вариантов языков программирования стандарта МЭК — ST, CFC, LD и др. Примеры программ CoDeSyS помогут вам в реализации той или иной задачи по автоматизации.
Из этой статьи вы узнаете:
Всем привет, дорогие друзья, на связи Гридин Семён. Я двигаюсь к своей цели, изучая робототехнике. Я читаю очень много информации по различным механическим узлам, по языкам программирования и одноплатным компьютерам.
Да, я изучаю язык программирования Python. Прохожу тесты в мобильном приложении SoloLearn. Очень рекомендую новичкам, кто только начинает изучать. Прога на русском языке. В каждом уроке вам объясняют значение каждого оператора, каждой команды, каждой функции. После урока вы сдаете тесты и проходите дальше. От простого к сложному.
Если кому интересно, пользуйтесь. Статья будет небольшая, так что не ругайтесь. Так как словами в этой теме много не опишешь, так что скачивайте и применяйте в своих программах.
Кстати, я сделал небольшой раздел электротехнических онлайн расчётов, если интересно, загляните сюда .
Ну что, друзья, поехали дальше.
файл one.py :
Зарубежные ПЛК, применяемые в России:
- Beckoff
- Kontron
- WagoIO
- TURC
- Moeller, система программирования Xsoft
- Festo
- ABB
- Панельные ПЛК Berghof
- Mitsubishi топ модель System Q
- PMA
- HollySyS
- IFM
Примеры программ для CoDeSyS
Для помощи вам в разработке ПО для ПЛК прикрепляю небольшой перечень различных примеров.
® Magisk
Версия: 24.3
Последнее обновление программы в шапке: 10.03.2022
- MagiskSU: Предоставления и управления рут-доступом с последующим скрытием вмешательства;
- Magisk Modules: Внесистемной модификации системы "на лету" (оверлеем) посредством модулей;
- Zygisk: Динамического внедрения стороннего кода в процессы приложений.
Опенсорсная утилита, которая патчит boot, позволяет получить рут-права (MagiskSU), устанавливать различные системные приложения и моды в режиме systemless, т. е. без изменения раздела /system. Позволяет запускать скрипты на различных этапах монтирования и подменять файлы (например, build.prop) еще до монтирования раздела /data. Позволяет скрывать наличие рута/разблокированного бутлоадера/permissive-режима SELinux от различных банковских/почтовых/игровых приложений и платежного сервиса Android Pay, а также получать на некоторых устройствах OTA-обновления стоковых прошивок.
- Некоторые старые приложения не поддерживают рут Magisk, и соответственно, не могут получить root-права. Пофиксить это могут только их разработчики.
- Некоторые приложения, допустим "Дія", используют известную недоработку Magisk (утечка монтирования). Эту проблему можно решить с помощью модуля riru-unshare или с помощью модуля Riru - MomoHider Если данные модули не помогают, идём в тему своего приложения и ставим модификации.
- MagiskHide, как правило, не работает на аппаратах с ядрами Linux ниже 3.8, и пофиксить это нельзя из-за отсутствия в этих ядрах компонентов, необходимых для скрытия Magisk (исключения из этого правила возможны, если разработчик прошивки портирует эти компоненты в старое ядро; такое порой случается, например, на кастомах на базе AOSP).
- Magisk не полностью поддерживает установку на адаптированный накопитель ("adoptable storage" - SD-карта, отформатированная во внутреннюю память), в противном случае рут может не работать. При любых проблемах рекомендуется сначала переместить менеджер на внутренний накопитель и лишь после этого задавать вопрос в теме.
- Magisk и его оболочку (Magisk Manager) желательно обновлять одновременно. "Устаревание" одного компонента при обновлении другого приводит к проблемам.
- Бета, альфа и canary версии устанавливаются и удаляются по тому же принципу, что и стабильные.
- При переходе на бету или canary со стабильной версии, или наоборот, нужно полностью удалить текущую версию с помощью деинсталлятора и затем установить другую версию.
- Бета и canary версии часто обновляются, но, как любые нестабильные версии, они могут содержать баги. Помните об этом и всегда делайте бэкап перед установкой.
Итак, у меня есть один каталог 2014_07_13_test с двумя файлами в нем:
Тем не менее питон дает мне
@Casy_fill Вы запускаете свою программу из каталога, в котором находятся файлы? Для импорта не имеет значения, что импортируемые и импортированные файлы имеют общий каталог. Важно, чтобы ваш интерпретатор Python правильно установил текущий каталог.
Ваш код в порядке, я подозреваю, что ваша проблема в том, как вы его запускаете.
Вам нужно запустить python из каталога 2014_07_13_test.
Откройте командную строку и нажмите cd в каталог 2014_07_13_test.
Если вы не можете 'cd' в такой каталог, вы можете добавить его в sys.path
Или установите / отредактируйте PYTHONPATH
И все должно быть хорошо .
Существует лучше притон вы должны использовать.
Также вам не нужна строка shebang для каждого файла . только те, которые вы собираетесь запускать из своей оболочки как исполняемые файлы.
Большое спасибо, что проблема! К сожалению, SublimeRepl (который я использую) прямо сейчас не поддерживает запуск python из папки, поэтому, похоже, мне нужно экспортировать PATH сейчас
Ага, это была моя проблема. У меня была большая папка с практическими проектами Python, открытая в VS Code, и у меня были большие проблемы с поиском вещей в том же каталоге. Моя проблема заключалась в том, что в терминале я не изменил каталоги на подкаталог, в котором был мой текущий проект. Как только я это сделал, проблема была решена.
Измените свой импорт в test.py на:
Я думаю, что это лучшее решение, чем наиболее принятый ответ. Я использую весь импорт модуля, как указал ST7: from . import local_module
У меня была аналогичная проблема, я решил ее, явно добавив каталог файла в список путей:
После этого у меня не было проблем с импортом из того же каталога.
Хотя это сработало, ответ от jwn с использованием относительного импорта был гораздо более чистым решением.
Вот общее решение, которое я использую. Решает проблему импорта из модулей в той же папке:
Поместите это вверху модуля, который выдает ошибку «Нет модуля с именем xxxx».
Это помогло мне загрузить модуль из родительского каталога, заменив ".." на "../ ..". Большое спасибо!
это файл имя файла , который будет импортироваться или текущего модулем , где мы импортируем модуль или постоянно
В моем случае Python не смог его найти, потому что я поместил код внутри модуля с дефисами, например my-module . Когда я поменял на my_module это работало.
Я столкнулся с этой проблемой. У меня было три папки в одном каталоге, поэтому мне пришлось указать, в какой папке. Пример: из скрипта импорта папки
Следующее не решает проблему OP, но заголовок и ошибка - это именно то, с чем я столкнулся.
Если в вашем проекте есть setup.py сценарий, вы можете установить этот пакет, в котором вы находитесь, с помощью python3 -m pip install -e . или python3 setup.py install или python3 setup.py develop , и этот пакет будет установлен, но по-прежнему доступен для редактирования (поэтому изменения в коде будут видны при импорте пакета). Если у него нет setup.py , разберитесь в этом .
Необходимое программное обеспечение и оборудование
В принципе я чаще всего применяю контроллеры компании ОВЕН — ПЛК100/150/154, ПЛК63/73, ПЛК110/160.
Насколько я помню, CoDeSyS применяют WAGO, Emko, Raspberry PI, и по-моему некоторые контроллеры ABB.
Итак, что нам нужно, чтобы начать работать:
- Среда программирования CoDeSyS;
- Необходимые библиотеки для среды программирования;
- Target-файл под ваше оборудование.
Более развернутый список контроллеров на CoDeSyS.
файл two.py :
В любом случае, проблема, с которой сталкивается OP, похоже, больше не существует?
Отечественные ПЛК:
- Овен ПЛК
- Фаствел Fastwel IO
- СКБ ПСИС CP6000 (psisCON™)
- НИЛ АП NLcon-CE
- Раскат S-7188 microPLC, модуль 4S-PLCcore
- ПРОЛОГ МСТС
- ЭРГОС ТРС (Робот)
- АРКТУР КЭП-1
- ОАО Автоматика УЗС-К
Другие решения кажутся «грязными»
В случае OP с 2 тестовыми файлами их изменение для работы, вероятно, нормально. Однако в других реальных сценариях методы, перечисленные в других ответах, вероятно, не рекомендуются. Они требуют, чтобы вы изменили код python или ограничили вашу гибкость (запуск файла python из определенного каталога) и, как правило, вызывают раздражение. Что делать, если вы только что клонировали проект, и это произойдет? Вероятно, это уже работает для других, и вносить изменения в код не нужно. Выбранный ответ также требует, чтобы люди запускали сценарий из определенной папки, чтобы он заработал. Это может стать источником длительного раздражения, а это никогда не бывает хорошо. Он также предлагает добавить вашу конкретную папку python в PATH (можно сделать через python или командную строку). Опять же, что произойдет, если вы переименуете или переместите папку через несколько месяцев? Вы должны снова выследить эту страницу, и в конце концов обнаружите, что вам нужно установить путь (и что вы сделали именно это несколько месяцев назад), и что вам просто нужно обновить путь (конечно, вы можете использовать sys.path и программно установить его, но это все еще может быть нестабильным ). Множество источников сильного раздражения.
Читайте также: