@@ -169,7 +169,18 @@ fn run_rustpython(vm: &VirtualMachine, run_mode: RunMode) -> PyResult<()> {
169169
170170 let scope = setup_main_module ( vm) ?;
171171
172- // _PyPathConfig_ComputeSysPath0
172+ // Import site first, before setting sys.path[0]
173+ // This matches CPython's behavior where site.removeduppaths() runs
174+ // before sys.path[0] is set, preventing '' from being converted to cwd
175+ let site_result = vm. import ( "site" , 0 ) ;
176+ if site_result. is_err ( ) {
177+ warn ! (
178+ "Failed to import site, consider adding the Lib directory to your RUSTPYTHONPATH \
179+ environment variable",
180+ ) ;
181+ }
182+
183+ // _PyPathConfig_ComputeSysPath0 - set sys.path[0] after site import
173184 if !vm. state . config . settings . safe_path {
174185 let path0: Option < String > = match & run_mode {
175186 RunMode :: Command ( _) => Some ( String :: new ( ) ) ,
@@ -185,14 +196,6 @@ fn run_rustpython(vm: &VirtualMachine, run_mode: RunMode) -> PyResult<()> {
185196 }
186197 }
187198
188- let site_result = vm. import ( "site" , 0 ) ;
189- if site_result. is_err ( ) {
190- warn ! (
191- "Failed to import site, consider adding the Lib directory to your RUSTPYTHONPATH \
192- environment variable",
193- ) ;
194- }
195-
196199 // Enable faulthandler if -X faulthandler, PYTHONFAULTHANDLER or -X dev is set
197200 // _PyFaulthandler_Init()
198201 if vm. state . config . settings . faulthandler {
0 commit comments