Как воспроизвести способ, которым PyCharm запускает мой проект Python 3.4 в командной строке?

Мой проект выглядит так:

running-pycharm-project-at-cmd - main.py - c - run_project.py - z - __init__.py - the_module.py - y - __init__.py - template.md - the_module_module.py - the_support_function.py 

Содержимое файлов .py показано ниже:

main.py

 from c.run_project import run print('running main.py...') run() 

с / run_project.py

 from czthe_module import the_module_function, the_module_write_function def run(): print('Running run_project.py!') the_module_function() # write a file: the_module_write_function(read_file='./z/y/template.md', write_file='../README.md') if __name__ == '__main__': run() 

с / г / the_module.py

 from czythe_module_module import the_module_module_function def the_module_function(): print('the_module_function is running!') the_module_module_function() pass def the_module_write_function(read_file, write_file): with open(read_file, 'r') as fid: with open(write_file, 'w') as fid_out: contents = fid.read() contents.replace('{}', 'THE-FINAL-PRODUCT!') fid_out.write(contents) 

с / г / г / the_module_module.py

 from .the_support_function import this_support_data def the_module_module_function(): print('The module module function is running!') print("Here is support data: {}".format(this_support_data)) pass 

с / г / г / the_support_function.py

 this_support_data = "I am the support data!" 

Репозиторий GitHub облегчит репликацию: running-pycharm-project-at-cmd

Проблема: в Pycharm загружает проект с помощью running-pycharm-project-at-cmd в качестве корня. Затем щелкните правой кнопкой мыши и запустите файл run_project.py. Все работает нормально. Я не могу понять, как запустить run_project.py из командной строки тем же способом. Создание main.py было обходным main.py предложенным в другом месте , но оно не удается из-за относительных ссылок на файл шаблона (в фактическом проекте папка y представляет собой подмодуль git и поэтому не может иметь абсолютных ссылок в нем).

Если вы скопируете файл main.py в папку c и переименуете его __init__.py , вы можете запустить:

$ python -mc

Параметр -m указывает python на запуск модуля или пакета (в этом случае c ). Python будет искать в папке c файл __init__.py и запускать его. Вам просто нужно убедиться, что папка c находится в вашем PYTHONPATH или является подпапкой текущего рабочего каталога.

Я кружил к этому и смог заставить его работать. Обратите внимание, что я нахожусь в Windows 7, и некоторые из них могут быть зависимыми от платформы. Чтобы получить эту работу без изменения какого-либо кода, ключ перед настройкой устанавливает переменную среды PYTHONPATH. PyCharm делает это автоматически (по умолчанию, но настраивается в параметрах Run Configuration).

шаги:

Воссоздание проблемы:

  • Скройте gitub-репо до G: \ TEST.
  • Перейдите в G: \ TEST \ running-pycharm-project-at-cmd-master \ c
  • python run_project.py

Traceback (most recent call last): File "run_project.py", line 1, in <module> from czthe_module import the_module_function, the_module_write_function ImportError: No module named 'c'

Простейшее решение (если возможно запустить Python из места расположения скрипта):

  • перед запуском установите переменную среды PYTHONPATH. например

SET PYTHONPATH=G:\TEST\running-pycharm-project-at-cmd-master

  • Теперь python run_project.py

Running run_project.py! the_module_function is running! The module module function is running! Here is support data: I am the support data!

Для запуска из удаленного места (это определенно зависит от Windows):

  • Создайте файл .bat, который перемещается для исправления рабочего каталога перед запуском Python. то есть:

START cmd /K "cd G:\TEST\running-pycharm-project-at-cmd-master\c & python run_project.py"

G:\TEST\myotherlocation run_it.bat

Running run_project.py! the_module_function is running! The module module function is running! Here is support data: I am the support data!