63

I'm unable to use relative paths in my code while using PyCharm. For instance, a simple open('test.txt', 'r') will not work - whereupon I am sure the file exists in the same level as the running py file. PyCharm will return this error.

FileNotFoundError: [Errno 2] No such file or directory:

After reading answers online on Stack Overflow, I have tried multiple options including:

  • Changing test.txt to ./test.txt
  • Closing project, deleting the .idea folder, open the folder with code.
  • Reinstalling as well as installing the latest version of PyCharm.
  • Invalidating caches and restarting.

None of these options have worked for me. Is there someway I can tell PyCharm to refresh the current working directory (or even to see where it thinks the current working directory is)?

Running the script in a terminal window will work. This appears to be a problem with PyCharm and not the script.

4
  • 3
    you can put this in your script to see the current working directory import os print(os.getcwd()) Commented Dec 16, 2015 at 4:45
  • Interesting, it says that it's at C:\Program Files (x86)\JetBrains\PyCharm 5.0.2\jre\jre\bin Commented Dec 16, 2015 at 4:47
  • Are you running with elevated permissions on the command line? If you are on a Unix like system then you should check your permissions for the file Commented Dec 16, 2015 at 4:48
  • 1
    nvm, you are on windows :) Commented Dec 16, 2015 at 4:48

11 Answers 11

75

Change: Run > Edit Configurations > Working directory, which sets the working directory for a specific project. (This is on a Mac)

Sign up to request clarification or add additional context in comments.

1 Comment

Note that this changes only the single configuration.
61

I have Pycharm 4.5, so things might have changed a bit.

Try going to Settings > Project > Project Structure

On this dialog, click your folder that has the source code in it, and then click the blue folder in the menu to note it as "source" folder. I believe this fixes a lot of the path issues in Pycharm

Here is the link to "content roots": https://www.jetbrains.com/pycharm/help/content-root.html

3 Comments

It was a similar fix that I just found (link here), I had to add the working directory by clicking on the project name on the top right and editing its configurations. It seems counter intuitive to have to add this extra step - perhaps there was some issues in creating the project in the first place. I'll marks yours as correct since it was the closest!
Sadly this didn't work for me on OSX - even though I had the root of my project set as a Source folder, where my script is, the Runner was unable to locate the script. The only solution I found was @andere's below, where you explicitly set the working directory to the absolute path. I'm not sure if this breaks when the project is moved...
@meowsqueak Glad you worked it out... With your problem I also typically us os.chir(directory_path) using a directory path i split from __file__. Doing that helps when running the script outside of an IDE and in the event that the script is called from a directory other than where the script and text file is located.
16

Current version 2019.2 somehow ignores "source root" from the "project structure". Here's how to actually enforce it:

Run -> Edit Configurations -> Python -> "Edit Templates" this buttin -> fill out "Working Directory"

3 Comments

+1. This solution solved my problem. What happened: I had a project folder with some python files that worked with paths (reading files and stuff). Than I pulled, new directory from github, and moved those python files to new folder. Working Directory stayed as old one. So this solution solved it, thanks :)
Thanks!!! I used to change manually the working directory for each file :) Didn't know there was a template
Thank you! In VSCode working directory was a directory with a project but in PyCharm a working directory becomes a parent directory of a script, not a project. So this is fixed my problem and behavior has become as expected.
8

__file__ refers to file path. So you can use the following to refer file in the same directory:

import os

dirpath = os.path.dirname(__file__)
filepath = os.path.join(dirpath, 'test.txt')
open(filepath, 'r')

2 Comments

I like your solution better than mine :) I was trying to keep it at the Pycharm level though haha
Thanks! My problem was more focused in PyCharm but good to know that I could use the os module too!
4

In PyCharm, click on "run/edit configurations..."

Then find your script file in the "Python" dropdown menu. Check the "Working Directory" entry and change it if necessary.

Comments

3
  1. GO TO EDIT CONFIGURATION (just LEFT side of GREEN CODE RUNNER ICON)
  2. click on python (not any specific python script) ONLY SELECT PYTHON
  3. then below right side click on [edit configuration templetes]
  4. select current working dir by going into those blocks
  5. It will change the CWD of all python file that exists in project folder.. then all file will understand the RELATIVE PATH that starts from your actual project name..

Comments

1

Sometimes it is different. I solved my problem by clicking "Run" at the Pycharm's toolbar and then "Edit Configurations..." and I change my Interpreter to another actual one. Just changing it in the settings does not help, but this opperation already does ;)

Comments

1

If you're trying to change the working directory of the Python Console inside PyCharm, you can find the corresponding settings under

Settings | Build, Execution, Deployment | Console | Python Console | Working directory

(see here).

Comments

1

I too had the same issue few minutes ago... but,with the latest version of PyCharm it is resolved by simply using the relative path of that file. For instance, a simple f = open('test', 'r') will work.

Comments

0

A little clarification for mac users. In mac, what @andere said above is correct for setting working directory. However, if your code is in a different folder, say working_dir/src/ (like classic java/scala file structure) in that case you still need to set your Sources Root. In mac's PyCharm this can be done by right clicking on the src/ folder > Mark Directory as > Sources Root.

Comments

0

I'm using PyCharm 2023.3, and I've also had trouble with PyCharm not being able to find files. Because PyCharm has lots of bells and whistles in this area, it can get really tangled up. To find and fix all trouble in this area:

  1. In the "Run" menu, select "Edit Configurations..."

  2. You will get a window listing all your configurations. Each one will have:

    Line 1: An interpreter.

    Line 2: The Python file to run.

    Line 4: The working directory to use.

  3. But at the bottom of that window, on the left, will be the blue hyperlink "Edit configuration templates..." When you click that hyperlink,

  4. A new window also comes, which has a list on the left. Selecting "Python" in the list on the left will bring up another configuration that also lists:

    Line 1: An interpreter.

    Line 2: The Python file to run.

    Line 4: The working directory to use.

  5. In the "File" menu, select "Settings..." A window comes up which has 3 panes. In the left pane, expand "Project: ". Below that you should see two items, "Python Interpreter" and "Project Structure".

  6. Select "Project Structure".

  7. in the right-most pane will appear a text box showing the Content Root. Make sure that's correct.

  8. Once you clean up all the working directories, make sure your project folder is not being synchronized by OneDrive, which can really mess with your paths.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.