@@ -43,13 +43,12 @@ func getVenvPath(basePath string) string {
4343
4444 return ""
4545}
46- func newVenv (dir string , pythonVersion string , logger * zap.SugaredLogger ) error {
46+ func newVenv (dir string , logger * zap.SugaredLogger ) error {
4747 var out bytes.Buffer
4848 var errout bytes.Buffer
4949 env := os .Environ ()
5050 logger .Debug (zap .Any ("env" , env ))
51- pythonVersion = "./" + pythonVersion
52- cmd := exec .Command ("bash" , "-c" , pythonVersion + " -m venv virtual_venv" )
51+ cmd := exec .Command ("bash" , "-c" , "/usr/local/python3.10/bin/python3.10 -m venv virtual_venv" )
5352 cmd .Dir = dir
5453 cmd .Stdout = & out
5554 cmd .Stderr = & errout
@@ -84,11 +83,10 @@ func newPipConf(basePath string, privateAddr string) error {
8483 }
8584 return nil
8685}
87- func updatePip (dir string , pythonVersion string , logger * zap.SugaredLogger ) error {
86+ func updatePip (dir string , logger * zap.SugaredLogger ) error {
8887 var out bytes.Buffer
8988 var errout bytes.Buffer
90- pythonVersion = "./" + pythonVersion
91- cmd := exec .Command (pythonVersion , "-m" , "pip" , "install" , "--upgrade" , "pip" )
89+ cmd := exec .Command ("./python3.10" , "-m" , "pip" , "install" , "--upgrade" , "pip" )
9290 cmd .Stdout = & out
9391 cmd .Dir = dir
9492 if err := cmd .Run (); err != nil {
@@ -104,11 +102,7 @@ func pipreqs(dir string, projectPath, savePath string, logger *zap.SugaredLogger
104102 logger .Debug (zap .String ("pipreqs Path" , dir ))
105103 logger .Debug (zap .String ("pipreqs projectPath" , projectPath ))
106104 logger .Debug (zap .String ("pipreqs savepath" , savePath ))
107- var pypiserverAddr string
108- if env .PIPREQS_SERVER_SOURCE_ADDR != "" {
109- pypiserverAddr = "--pypi-server=" + env .PIPREQS_SERVER_SOURCE_ADDR
110- }
111- cmd := exec .Command ("./pipreqs" , projectPath , "--savepath" , savePath , "--encoding=utf-8" , "--ignore=virtual_venv" , pypiserverAddr )
105+ cmd := exec .Command ("./pipreqs" , projectPath , "--savepath" , savePath , "--encoding=utf-8" , "--ignore=virtual_venv" )
112106 cmd .Dir = dir
113107 stdout , err := cmd .StdoutPipe ()
114108 if err != nil {
@@ -160,16 +154,21 @@ func installpipreqs(dir string, logger *zap.SugaredLogger) error {
160154 logger .Debug ("install pipreqs success " )
161155 return nil
162156}
163- func installRequirements (dir string , textDir string , logger * zap.SugaredLogger ) error {
157+ func installRequirements (dir string , textDir string , oldNvMp map [ string ] string , logger * zap.SugaredLogger ) error {
164158 var out bytes.Buffer
165159 var stderr bytes.Buffer
166160 by , err := os .ReadFile (textDir )
167161 if err != nil {
168162 logger .Error ("read requirements.txt error :" , zap .Error (err ))
169163 return err
170164 }
165+ logger .Debug (zap .String ("requirements.txt" , string (by )))
171166 nvmp := parseRequirements (string (by ))
172167 for k , v := range nvmp {
168+ if oldVersion , ok := oldNvMp [k ]; ok && oldVersion != "" {
169+ logger .Debug (zap .String ("skip install user requirements dependencies" , k ))
170+ continue
171+ }
173172 var cmd * exec.Cmd
174173 if v != "" {
175174 cmd = exec .Command ("./pip" , "install" , k + "==" + v )
@@ -281,21 +280,14 @@ func directDependenceSurvival(mod *[]model.DependencyItem, nvMp map[string]strin
281280 }
282281 }
283282}
284- func getPythonVersion () string {
285- _ , err := exec .LookPath ("python3.10" )
286- if err != nil {
287- return "python"
288- }
289- return "python3.10"
290- }
283+
291284func Run (ctx context.Context , dir string , logger * zap.SugaredLogger , nvMp map [string ]string ) ([]model.DependencyItem , error ) {
292285 var mod []model.DependencyItem
293286 var venvDir = filepath .Join (dir , "virtual_venv" )
294287 venvPath := getVenvPath (dir )
295288 requirementsPath := filepath .Join (dir , "requirements.txt" )
296289 venvRequirementsPath := filepath .Join (venvPath , "requirements.txt" )
297- pythonVersion := getPythonVersion ()
298- if err := newVenv (dir , pythonVersion , logger ); err != nil {
290+ if err := newVenv (dir , logger ); err != nil {
299291 return nil , err
300292 }
301293 if env .PIP_SOURCE_ADDR != "" {
@@ -304,7 +296,7 @@ func Run(ctx context.Context, dir string, logger *zap.SugaredLogger, nvMp map[st
304296 return nil , err
305297 }
306298 }
307- if err := updatePip (venvPath , pythonVersion , logger ); err != nil {
299+ if err := updatePip (venvPath , logger ); err != nil {
308300 return nil , err
309301 }
310302 if err := setPipTimeout (); err != nil {
@@ -316,7 +308,7 @@ func Run(ctx context.Context, dir string, logger *zap.SugaredLogger, nvMp map[st
316308 if err := pipreqs (venvPath , dir , venvPath , logger ); err != nil {
317309 return nil , err
318310 }
319- if err := installRequirements (venvPath , venvRequirementsPath , logger ); err != nil {
311+ if err := installRequirements (venvPath , venvRequirementsPath , nvMp , logger ); err != nil {
320312 return nil , err
321313 }
322314 if err := installpipdeptree (venvPath , logger ); err != nil {
@@ -332,6 +324,7 @@ func Run(ctx context.Context, dir string, logger *zap.SugaredLogger, nvMp map[st
332324 for k , v := range nvMp {
333325 if newV , ok := newRequirements [k ]; ok && newV != v {
334326 updatePackage (venvPath , logger , k , v )
327+ newRequirements [k ] = v
335328 }
336329 }
337330 result , err := pipdeptree (venvPath , logger )
0 commit comments