<Sympthon> user@workstation:/data/bugreport/buildroot$ ./utils/scanpypi websocket-client buildroot package name for websocket-client: python-websocket-client Package: python-websocket-client Fetching package websocket-client Downloading package websocket-client from https://files.pythonhosted.org/packages/bb/ae/4ff2ae1f722d0c23dc4cdf74a4e05b0d1bbe752dc28620b9fe05c53e61aa/websocket_client-0.51.0.tar.gz... Traceback (most recent call last): File "./utils/scanpypi", line 721, in <module> main() File "./utils/scanpypi", line 670, in main package.load_setup() File "./utils/scanpypi", line 279, in load_setup os.chdir(self.tmp_extract) OSError: [Errno 2] No such file or directory: '/tmp/scanpypi-20A8aE/python-websocket-client/websocket-client-0.51.0' user@workstation:/data/bugreport/buildroot$ </Sympthon> <investigation> Exciting path: /tmp/scanpypi-20A8aE/python-websocket-client/websocket_client-0.51.0/ Expected path: /tmp/scanpypi-20A8aE/python-websocket-client/websocket-client-0.51.0/ Difference is _ instead of - </investigation> <suggestion> Maybe some regex or * can be used to allow both options. </suggestion>
I now notice that the tar file has the same _.
Ok. My end goal was to add socketio-client-nexus. I got the error when scanpypi is resolving dependencies. I tried to keep my bug report as small as possible. I have made workaround. But python is new to me. def load_setup(self): """ Loads the corresponding setup and store its metadata """ current_dir = os.getcwd() self.tmp_extract = os.path.join(os.path.dirname(self.tmp_extract),self.filename.split(".tar")[0]) #print("MGZ: {0} {1}".format(self.tmp_extract,extract_dir)) os.chdir(self.tmp_extract) sys.path.append(self.tmp_extract) s_file, s_path, s_desc = imp.find_module('setup', [self.tmp_extract]) setup = imp.load_module('setup', s_file, s_path, s_desc) try: self.setup_metadata = self.setup_args[self.metadata_name] except KeyError: # This means setup was not called which most likely mean that it is # called through the if __name__ == '__main__' directive. # In this case, we can only pray that it is called through a # function called main() in setup.py. setup.main() # Will raise AttributeError if not found self.setup_metadata = self.setup_args[self.metadata_name] # Here we must remove the module the hard way. # We must do this because of a very specific case: if a package calls # setup from the __main__ but does not come with a 'main()' function, # for some reason setup.main() will successfully call the main # function of a previous package... sys.modules.pop('setup', None) del setup os.chdir(current_dir) sys.path.remove(self.tmp_extract)
Please send your patch using git send-email via BR's mailing list. See http://nightly.buildroot.org/manual.html#submitting-patches for more information.
Yegor, it seems like the person who submitted this bug never submitted a proper patch to the mailing list. Could you take care of submitting such a patch, so that we can close this bug ? Thanks a lot!
Fixed by https://git.buildroot.org/buildroot/commit/?id=fd29797f659c09cbc2aeba33f8d6f5b992e65cd4. Thanks Yegor!