Search code examples
pythonpython-poetry

Have PermissionError when I run "poetry run" command


Environment

  • Ubuntu 20.04
  • Python 3.7.3
  • Poetry 1.0.8

My Problem

I installed poetry to manage packages, and I tried it with following simple project,

.
└── myproject
    ├── README.rst
    ├── myproject
    │   ├── __init__.py
    │   ├── main.py
    ├── myproject.egg-info
    │   ├── PKG-INFO
    │   ├── SOURCES.txt
    │   ├── dependency_links.txt
    │   ├── requires.txt
    │   └── top_level.txt
    ├── poetry.lock
    ├── pyproject.toml
    └── tests
        ├── __init__.py
        └── test_myproject.py

To run main.py I tried

$ poetry run myproject/main.py

But I had an error, which says,

[PermissionError]
[Errno 13] Permission denied

What I tried

To run my code, I tried another way.

$ poetry shell
(myproject-x8XipcUE-py3.7)$ python myproject/main.py

I had no error...

What is the problem for my poetry run command?


Solution

  • My guess is that myproject/main.py isn't an executable (doesn't have the 'x') permission. That's why you can run it with python myproject/main.py, but can't run it as the main exe. To fix it, run chmod +x myproject/main.py, and then try poetry run again.

    Of course, you'll have to have a proper Shebang at the very top of main.py. Something like #!/usr/bin/env python (again - at the very beginning of the file).