@@ -187,8 +187,17 @@ fn create_settings(matches: &ArgMatches) -> PySettings {
187
187
settings. path_list . push ( "" . to_owned ( ) ) ;
188
188
189
189
if !ignore_environment {
190
- settings. path_list . append ( & mut get_paths ( "RUSTPYTHONPATH" ) ) ;
191
- settings. path_list . append ( & mut get_paths ( "PYTHONPATH" ) ) ;
190
+ settings. path_list . extend ( get_paths ( "RUSTPYTHONPATH" ) ) ;
191
+ settings. path_list . extend ( get_paths ( "PYTHONPATH" ) ) ;
192
+ }
193
+ if let Some ( paths) = option_env ! ( "BUILDTIME_RUSTPYTHONPATH" ) {
194
+ settings. path_list . extend (
195
+ std:: env:: split_paths ( paths) . map ( |path| path. into_os_string ( ) . into_string ( ) . unwrap ( ) ) ,
196
+ )
197
+ } else if option_env ! ( "RUSTPYTHONPATH" ) . is_none ( ) {
198
+ settings
199
+ . path_list
200
+ . push ( concat ! ( env!( "CARGO_MANIFEST_DIR" ) , "/Lib" ) . to_owned ( ) ) ;
192
201
}
193
202
194
203
// Now process command line flags:
@@ -268,18 +277,18 @@ fn get_env_var_value(name: &str) -> Result<u8, std::env::VarError> {
268
277
}
269
278
270
279
/// Helper function to retrieve a sequence of paths from an environment variable.
271
- fn get_paths ( env_variable_name : & str ) -> Vec < String > {
272
- let paths = env:: var_os ( env_variable_name) ;
273
- match paths {
274
- Some ( paths ) => env :: split_paths ( & paths)
275
- . map ( |path| {
276
- path . into_os_string ( )
277
- . into_string ( )
278
- . unwrap_or_else ( |_| panic ! ( "{} isn't valid unicode" , env_variable_name ) )
279
- } )
280
- . collect ( ) ,
281
- None => vec ! [ ] ,
282
- }
280
+ fn get_paths ( env_variable_name : & str ) -> impl Iterator < Item = String > + ' _ {
281
+ env:: var_os ( env_variable_name)
282
+ . into_iter ( )
283
+ . flat_map ( move | paths| {
284
+ env :: split_paths ( & paths )
285
+ . map ( |path| {
286
+ path . into_os_string ( )
287
+ . into_string ( )
288
+ . unwrap_or_else ( |_| panic ! ( "{} isn't valid unicode" , env_variable_name ) )
289
+ } )
290
+ . collect :: < Vec < _ > > ( )
291
+ } )
283
292
}
284
293
285
294
#[ cfg( feature = "flame-it" ) ]
@@ -329,24 +338,6 @@ fn write_profile(matches: &ArgMatches) -> Result<(), Box<dyn std::error::Error>>
329
338
}
330
339
331
340
fn run_rustpython ( vm : & VirtualMachine , matches : & ArgMatches ) -> PyResult < ( ) > {
332
- if let Some ( paths) = option_env ! ( "BUILDTIME_RUSTPYTHONPATH" ) {
333
- let sys_path = vm. get_attribute ( vm. sys_module . clone ( ) , "path" ) ?;
334
- for ( i, path) in std:: env:: split_paths ( paths) . enumerate ( ) {
335
- vm. call_method (
336
- & sys_path,
337
- "insert" ,
338
- vec ! [
339
- vm. ctx. new_int( i) ,
340
- vm. ctx. new_str(
341
- path. into_os_string( )
342
- . into_string( )
343
- . expect( "Invalid UTF8 in BUILDTIME_RUSTPYTHONPATH" ) ,
344
- ) ,
345
- ] ,
346
- ) ?;
347
- }
348
- }
349
-
350
341
let scope = vm. new_scope_with_builtins ( ) ;
351
342
let main_module = vm. new_module ( "__main__" , scope. globals . clone ( ) ) ;
352
343
0 commit comments