Skip to content

Commit 91a6fc6

Browse files
committed
Strip out all -e flags when processing requirements file
Previously, there were various with installing editable packages in different python / pip versions. serverless#240 This adds logic to strip out all '-e' editable flags from the requirements.txt file and issues a warning to the CLI. fixes serverless#240
1 parent 632f389 commit 91a6fc6

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

lib/pip.js

+17-5
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ function generateRequirementsFile(
6969
filterRequirementsFile(
7070
path.join(servicePath, '.serverless/requirements.txt'),
7171
targetFile,
72-
options
72+
options,
73+
serverless
7374
);
7475
serverless.cli.log(
7576
`Parsed requirements.txt from pyproject.toml in ${targetFile}...`
@@ -81,13 +82,14 @@ function generateRequirementsFile(
8182
filterRequirementsFile(
8283
path.join(servicePath, '.serverless/requirements.txt'),
8384
targetFile,
84-
options
85+
options,
86+
serverless
8587
);
8688
serverless.cli.log(
8789
`Parsed requirements.txt from Pipfile in ${targetFile}...`
8890
);
8991
} else {
90-
filterRequirementsFile(requirementsPath, targetFile, options);
92+
filterRequirementsFile(requirementsPath, targetFile, options, serverless);
9193
serverless.cli.log(
9294
`Generated requirements from ${requirementsPath} in ${targetFile}...`
9395
);
@@ -378,7 +380,7 @@ function getRequirements(source) {
378380
* @param {string} target requirements where results are written
379381
* @param {Object} options
380382
*/
381-
function filterRequirementsFile(source, target, options) {
383+
function filterRequirementsFile(source, target, options, serverless) {
382384
const noDeploy = new Set(options.noDeploy || []);
383385
const requirements = getRequirements(source);
384386
var prepend = [];
@@ -395,7 +397,17 @@ function filterRequirementsFile(source, target, options) {
395397
req.startsWith('-i') ||
396398
req.startsWith('-r')
397399
) {
398-
// If we have options (prefixed with --) keep them for later
400+
if (req.startsWith('-e')) {
401+
// strip out editable flags
402+
// not required inside final archive and avoids pip bugs
403+
// see https://github.com/UnitedIncome/serverless-python-requirements/issues/240
404+
req = req.split('-e')[1].trim();
405+
serverless.cli.log(
406+
`Warning: Stripping -e flag from requirement ${req}`
407+
);
408+
}
409+
410+
// Keep options for later
399411
prepend.push(req);
400412
return false;
401413
} else if (req === '') {

0 commit comments

Comments
 (0)