- Edit the startup file (if you want it to do nothing, just comment everything out for now)
- Restart MATLAB
- Recompile your package. The changes to "startup.m" should take effect after restart.
- Re-edit the startup file if you still need this startup behavior in MATLAB. The next time you restart MATLAB, the original startup code will run.
Why is my MATLAB Python Package returning the wrong current directory?
3 views (last 30 days)
Show older comments
MathWorks Support Team
on 16 Dec 2020
Answered: MathWorks Support Team
on 26 Feb 2021
I am compiling the following MATLAB function into a Python Package:
function showpwd()
disp("MATLAB Time")
pwd
end
When I call showpwd in a Python script, it returns a different directory than the one that it has been called from. Furthermore, after calling this function, Python has changed its current directory. See the Python script and output below:
from __future__ import print_function
import showpwd
import matlab
import os
print(os.getcwd())
my_showpwd = showpwd.initialize()
my_showpwd.showpwd(nargout=0)
my_showpwd.terminate()
print(os.getcwd())
Output:
MATLAB Time
ans =
'userName\Documents\MATLAB\myDir'
Before MATLAB is called: userName\Documents\MATLAB\myDir\showpwd\for_redistribution_files_only\samples
After MATLAB is called: userName\Documents\MATLAB\myDir
Why is this happening and how can I resolve this?
Accepted Answer
MathWorks Support Team
on 16 Dec 2020
This can occur if you have a "startup.m" file which specifies some behavior for MATLAB to execute on startup. These files can be useful when working within MATLAB, however they can cause some issues downstream if MATLAB is called from another software (in this case Python). When initializing a MATLAB generated Python package, the MATLAB process will execute the code that is provided in the "startup.m" file. So if you have some code in your "startup.m" file that changes the current directory or does something with the path, this can cause conflicts or "unexpected" behavior when trying to identify the current directory.
To find your startup file, you can execute the following command in MATLAB:
>> which -all startup
This will identify the path to any "startup.m" file you might have created on your machine. From here, you need to:
0 Comments
More Answers (0)
See Also
Categories
Find more on Python Package Integration in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!