phoerious commented on a change in pull request #16658:
URL: https://github.com/apache/beam/pull/16658#discussion_r820078447



##########
File path: sdks/python/container/boot.go
##########
@@ -210,15 +224,37 @@ func main() {
        wg.Add(len(workerIds))
        for _, workerId := range workerIds {
                go func(workerId string) {
-                       log.Printf("Executing: python %v", strings.Join(args, " 
"))
-                       log.Fatalf("Python exited: %v", 
execx.ExecuteEnv(map[string]string{"WORKER_ID": workerId}, "python", args...))
-                       wg.Done()
+                       defer wg.Done()
+                       log.Printf("Executing Python (worker %v): python %v", 
workerId, strings.Join(args, " "))
+                       log.Printf("Python (worker %v) exited with code: %v", 
workerId, execx.ExecuteEnv(map[string]string{"WORKER_ID": workerId}, "python", 
args...))
                }(workerId)
        }
        wg.Wait()
+
+       return nil
+}
+
+// setupVenv initialize a local Python venv and set the corresponding env 
variables
+func setupVenv(baseDir, workerId string) (string, error) {
+       log.Printf("Initializing temporary Python venv ...")
+
+       if err := os.MkdirAll(baseDir, 0750); err != nil {
+           return "", fmt.Errorf("Failed to create venv base directory: %s", 
err)
+       }
+       dir, err := ioutil.TempDir(baseDir, fmt.Sprintf("beam-venv-%s-", 
workerId))
+       if err != nil {
+           return "", fmt.Errorf("Failed Python venv directory: %s", err)
+       }
+       args := []string{"-m", "venv", "--system-site-packages", dir}
+       if err := execx.Execute("python", args...); err != nil {
+           return "", err
+       }
+       os.Setenv("VIRTUAL_ENV", dir)

Review comment:
       Because we are not running a shell and `source` is a shell/bash builtin. 
Also executing a shell in a subprocess won't affect the parent process.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to